Укажите наибольшее натуральное число, при вводе которого эта программа напечатает сначала 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.
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.
Знаешь ответ?
Чтобы оставить ответ, войдите или зарегистрируйтесь.
Ответ или решение 1
Gladikova
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
Новые вопросы в разделе Информатика
Адинела
05.10.2022, 08:15
Гаязутдин
05.10.2022, 01:10
Алайбек
05.10.2022, 01:05
Акияма
05.10.2022, 01:00