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