Решение: Максимальное число по алгоритму
Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное десятичное число $x$, этот алгоритм печатает два числа: $L$ и $M$. Укажите наибольшее число $x$, при вводе которого алгоритм печатает сначала $15$, а потом $3$.
1x = int(input()) 2L = 1 3M = 0 4while x > 0: 5 M = M + 1 6 if x % 2 != 0: 7 L = L * (x % 8) 8 x = x // 8 9print(L) 10print(M)
Решение по шагам
4 шагаВ каждой итерации алгоритм заменяет $x$ на частное от деления на $8$, поэтому $M$ равно числу цифр исходного числа в восьмеричной системе счисления.
$$M=3$$Если последняя цифра числа нечётная, она умножается на $L$. Следовательно, $L$ равно произведению нечётных цифр восьмеричной записи числа.
$$L=15$$Произведение нечётных цифр, равное $15$, можно получить цифрами $3$ и $5$. Третья цифра должна быть чётной. Чтобы число было наибольшим, цифры располагаем в порядке убывания и выбираем наибольшую возможную первую цифру: $(653)_8$.
Переводим число из восьмеричной системы в десятичную.
$$(653)_8=6\cdot8^2+5\cdot8+3=384+40+3=427$$Где здесь ошибаются
Считать $M$ количеством разрядов в десятичной записи.
Умножать все цифры, а не только нечётные.
Забыть, что остатки при делении на $8$ являются цифрами восьмеричной записи.
Записать $(653)_8$ как десятичный ответ без перевода в десятичную систему.