Решение: Максимальное число по алгоритму
Получив на вход натуральное десятичное число $x$, алгоритм печатает два числа: $L$ и $M$. Найдите наибольшее число $x$, при вводе которого алгоритм печатает сначала $7$, а потом $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)
Решение по шагам
5 шаговКаждая итерация заменяет $x$ на целую часть от деления на $8$, поэтому $M$ равно количеству цифр исходного числа в восьмеричной системе счисления. Условие $M=3$ означает, что число имеет три восьмеричные цифры.
Остатки от деления на $8$ — это цифры восьмеричной записи числа. В произведение $L$ входят только нечётные цифры.
Чтобы получить $L=7$, произведение нечётных цифр должно быть равно $7$. Значит, среди цифр должна быть одна цифра $7$, а остальные нечётные цифры могут быть только $1$; для максимального числа выгоднее выбрать остальные цифры чётными.
Максимальная трёхзначная восьмеричная запись с этими условиями — $766_8$: цифра $7$ даёт множитель $7$, а цифры $6$ в произведение не входят.
Переведём число в десятичную систему: $766_8=7\cdot8^2+6\cdot8+6=448+48+6=502$.
Где здесь ошибаются
Считать число итераций по десятичным цифрам, а не по цифрам восьмеричной записи.
Включать в произведение $L$ чётные цифры.
Искать наибольшее число в десятичной записи, не учитывая, что алгоритм последовательно выделяет восьмеричные цифры.