Предмет: Информатика,
автор: WikaWolk
Пожалуйста напишите подробное решение задачи (с прокруткой или рассуждением)
Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 4, а потом 0.
var x, a, b, c: integer;
begin
readln(x); a:= 0; b:= 0;
while x > 0 do begin
c:= x mod 2;
if c = 0 then a:= a + 1
else b:= b + 1;
x:= x div 10;
end;
writeln(a); writeln(b);
end.
Ответы
Автор ответа:
2
Нужно, чтобы при выводе переменная a = 4, b = 0. Алгоритм работает так: к "a" прибавляет единицу при условии, что оно четное, к "b", если нечетное. Поэтому нужно найти число, которое четырехзначное и четное, учитывая, что после каждого прогона цикла, число делят на 10, то есть "отсекают" последнюю цифру числа.
У меня получилось минимальное - 2000.
1)
c = 2000 mod 2;
c = 0 -> a = 0 + 1.
x = 2000 div 10.
2) c = 200 mod 2;
c = 0 -> a = 1 + 1.
x = 200 div 10.
3) c = 20 mod 2.
c = 0 -> a = 2 + 1.
x = 20 div 10.
4) c = 2 mod 2.
c = 0 -> a = 3 + 1.
x = 2 div 10.
Итого на выводе получаем (4 0), что и нужно было.
У меня получилось минимальное - 2000.
1)
c = 2000 mod 2;
c = 0 -> a = 0 + 1.
x = 2000 div 10.
2) c = 200 mod 2;
c = 0 -> a = 1 + 1.
x = 200 div 10.
3) c = 20 mod 2.
c = 0 -> a = 2 + 1.
x = 20 div 10.
4) c = 2 mod 2.
c = 0 -> a = 3 + 1.
x = 2 div 10.
Итого на выводе получаем (4 0), что и нужно было.
WikaWolk:
спасибо большое
Похожие вопросы
Предмет: Другие предметы,
автор: shdilsora
Предмет: История,
автор: alenatopolanskaa
Предмет: Литература,
автор: suser3290
Предмет: Математика,
автор: софа129