Укажите наибольшее натуральное число, при вводе которого эта программа напечатает сначала...

0 голосов
221 просмотров

Укажите наибольшее натуральное число, при вводе которого эта программа напечатает сначала 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.


Информатика (63 баллов) | 221 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

1) цикл проработает 3 раза, но деление на 8 произойдёт дважды
2) идём восходящим методом. чтобы число было наибольшим, то нужно помножить наибольший остаток при последней итерации цикла, следовательно остатки в цикле будут 6. 0, 0
теперь помножим 6 на 8 два раза
получим следующую цепочку 6->48->384, следовательно 384 наибольшее такое число.
Ответ: 384

(6.8k баллов)
0

*максимальный остаток при последней итерации