5 номер. Преобразование записей чисел
Алгоритм обработки числа
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится четверичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если количество значащих цифр в четверичной записи числа чётное, то к этой записи в середину дописывается 0;
б) если количество значащих цифр в четверичной записи числа нечётное, то запись не изменяется.
Полученная таким образом запись является десятичной записью искомого числа R.
Например, для исходного числа 6₁₀ = 12₄ результатом является число 102₁₀, а для исходного числа 21₁₀ = 111₄ результатом является число 111₁₀.
Укажите максимальное число N, после обработки которого с помощью этого алгоритма, получается число R, не большее, чем 180. В ответе запишите это число в десятичной системе счисления.
Подсказка
Сначала выполните все шаги для одного N, сохраняя строку после каждого изменения. Затем уточните, что требуется выбрать: N, R или количество значений.
Решение
def from_10(n, base): res = '' while n != 0: last = n % base res = res + str(last) n //= base return res[::-1] for n in range(1, 10**5): n_4 = from_10(n, 4) count_d = len(n_4) if count_d % 2 == 0: n_4 = n_4[:count_d//2] + '0' + n_4[count_d//2:] r = int(n_4) if r <= 180: print(n)