Ниже записана программа. Получив на вход число x, эта программа печатает два числа. Укажите набольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 24. var x, a, b : integer; begin readln(x); a := 0...
Ниже записана программа. Получив на вход число x, эта программа печатает два числа. Укажите набольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 24.
var x, a, b : integer;
begin
readln(x);
a := 0; b := 1;
while x > 0 do begin
a := a + 1;
b := b * (x mod 8);
x := x div 8;
end;
writeln(a); write(b);
end.
Ответ(ы) на вопрос:
Гость
В цикле а увеличивается каждый раз на 1, значит, цикл идет 3 раза.
b каждый раз умножается на остаток деления х на 8.
Получается 24 = 1*4*6 = 2*3*4 = 2*2*6
х каждый раз целочисленно делится на 8. Последний раз получается 0.
Пусть остатки были равны 1, 4 и 6.
Тогда число х должно быть равно 1+(4+(6+8)*8)*8 = 929.
Пусть остатки были равны 2, 3 и 4.
Тогда число х должно быть равно 2+(3+(4+8)*8)*8 = 794.
Пусть остатки были равны 2, 2 и 6.
Тогда число х должно быть равно 2+(2+(6+8)*8)*8 = 914.
Наибольшее из чисел - 929.
Не нашли ответ?
Похожие вопросы