5 номер. Преобразование записей чисел
Алгоритм обработки числа
(О. Лысенков) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится четверичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если сумма цифр четверичной записи кратна 4, то все нули в записи меняются на 3, а все 3 меняются на нули, после к числу приписывается 21 справа;
б) если сумма цифр четверичной записи не кратна 4, то к записи справа приписывается 22 после первые два разряда, полученной записи, меняются на 11 соответственно, разряды нумеруются слева направо, начиная с 1.
Полученная таким образом запись является четверичной записью искомого числа R.
Укажите минимальное число N, для которого результатом работы алгоритма является наименьшее число R, превышающее 200.
В ответе это число запишите в десятичной системе счисления.
Подсказка
Сначала выполните все шаги для одного N, сохраняя строку после каждого изменения. Затем уточните, что требуется выбрать: N, R или количество значений.
Решение
def cc(n): s = '' while n != 0: s = str(n % 4) + s n //= 4 return s def f(n): s = cc(n) if sum(list(map(int, list(s)))) % 4 == 0: s = s.replace('0', '*').replace('3', '0').replace('*', '3') s += '21' else: s += '22' s = '11' + s[2:] return int(s, 4) mi = float('inf')ans = float('inf')for i in range(1, 100000): if f(i) > 200: if f(i) < mi: mi = f(i) ans = iprint(ans)