Ниже записана программа. Получив ** вход число x, эта программа печатает два числа....

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

Ниже записана программа. Получив на вход число 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.


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

В цикле а увеличивается каждый раз на 1, значит, цикл идет 3 раза.
b каждый раз умножается на остаток деления х на 8.
Получается 24 = 1*4*6 = 2*3*4 = 2*2*6
х каждый раз целочисленно делится на 8. Последний раз получается 0.
Пусть остатки были равны 1, 4 и 6.
Тогда число х должно быть равно 1+(4+6*8)*8 = 417.
Пусть остатки были равны 2, 3 и 4.
Тогда число х должно быть равно 2+(3+4*8)*8 = 282.
Пусть остатки были равны 2, 2 и 6.
Тогда число х должно быть равно 2+(2+6*8)*8 = 402.
Наибольшее из чисел - 417.

(320k баллов)