Предмет: Информатика,
автор: Alina1637
Укажите наибольшее натуральное число, при вводе которого эта программа напечатает сначала 3, потом – 6. С объяснением
var x, L, M: integer;
begin
readln(x);
L:=0; M:=0;
while x > 0 do begin
L:=L + 1;
if (x mod 8) <> 0 then
M:= M + x mod 8;
x:= x div 8;
end;
writeln(L); write(M);
end.
Ответы
Автор ответа:
2
1) цикл проработает 3 раза, но деление на 8 произойдёт дважды
2) идём восходящим методом. чтобы число было наибольшим, то нужно помножить наибольший остаток при последней итерации цикла, следовательно остатки в цикле будут 6. 0, 0
теперь помножим 6 на 8 два раза
получим следующую цепочку 6->48->384, следовательно 384 наибольшее такое число.
Ответ: 384
2) идём восходящим методом. чтобы число было наибольшим, то нужно помножить наибольший остаток при последней итерации цикла, следовательно остатки в цикле будут 6. 0, 0
теперь помножим 6 на 8 два раза
получим следующую цепочку 6->48->384, следовательно 384 наибольшее такое число.
Ответ: 384
Disaczar:
*максимальный остаток при последней итерации
Похожие вопросы
Предмет: Алгебра,
автор: fainabarinova94
Предмет: Физика,
автор: vladka5292
Предмет: Литература,
автор: yaroslavsmirnoff07
Предмет: Математика,
автор: makedontut
Предмет: Химия,
автор: виртуалка