Задание 5. Информатика. ЕГЭ. Поляков-6704

Просмотры: 73
Изменено: 3 марта 2025

(А. Рогов) На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом:

  1. Строится двоичная запись числа \(N.\)
  2. Если число \(N\) не делится на \(2,\) все цифры двоичной записи инвертируются (\(0\) заменяется на \(1\) и наоборот).
  3. Все цифры полученной двоичной записи дублируются.
  4. Полученная таким образом запись является двоичной записью искомого числа \(R.\)

Например, для числа \(6\) двоичная запись \(110_2\) преобразуется в запись \(111100_2 = 60,\) для числа \(5\) двоичная запись \(101_2\) преобразуется в \(1100_2 = 12.\) Укажите минимальное число \(N,\) после обработки которого с помощью этого алгоритма получается число \(R,\) большее чем \(60.\)

Решение:

Python


def R(N):
    bn = f'{N:b}'
    if N % 2:
        bn = bn.replace('0', '2').replace('1', '0').replace('2', '1')
    bn = ''.join(ch*2 for ch in bn)
    return int(bn, 2)

for N in range(1, 100):
    if R(N) > 60:
        print(N)
        break

Ответ: \(8\)