Решение: Максимальное число по алгоритму
Получив на вход натуральное десятичное число $x$, алгоритм печатает два числа: $L$ и $M$. Укажите наибольшее число $x$, при вводе которого алгоритм выводит сначала 16, а потом 3.
1x = int(input()) 2L = 1 3M = 0 4while x > 0: 5 M = M + 1 6 if x % 2 == 0: 7 L = L * (x % 6) 8 x = x // 6 9print(L) 10print(M)
Решение по шагам
5 шаговПеременная $M$ увеличивается на единицу при каждом делении $x$ на 6. Поэтому $M=3$ означает, что исходное число имеет ровно три цифры в шестиричной системе счисления.
Остатки от деления на 6 являются цифрами шестиричной записи числа. Если очередной остаток чётный, он умножается на $L$. Нулевая цифра дала бы $L=0$, поэтому для получения $L=16$ используются цифры 2 или 4.
Произведение трёх возможных множителей равно 16 только при двух множителях 4: $4\cdot4=16$. Оставшаяся цифра должна быть нечётной, чтобы не изменить произведение.
Наибольшее трёхзначное шестиричное число с цифрами 4, 4 и нечётной цифрой получается при выборе наибольшей нечётной цифры 5 и расположении цифр в порядке $544_6$.
Переведём число в десятичную систему: $544_6=5\cdot6^2+4\cdot6+4=180+24+4=208$.
Где здесь ошибаются
Считать, что $M$ равно количеству чётных цифр, а не количеству цифр в шестиричной записи.
Учитывать множители для нечётных цифр.
Забыть, что цифра 0 обнуляет $L$.
Выбрать не самое большое расположение цифр 4, 4 и 5.