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

Просмотры: 18
Изменено: 14 апреля 2025

(Е. Джобс) Алгоритм получает на вход натуральное число \(N > 1\) и строит по нему новое число \(R\) следующим образом:

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

Какое наименьшее число, большее \(80,\) может получиться в результате работы автомата?

Решение:

Python


def R(N):
    bn = f'{N:b}'
    res = bn + str(bn.count('1') % 2)
    res += str(int(bn.count('1') <= bn.count('0')))
    return int(res, 2)

print(min(R(N) for N in range(2, 200) if R(N) > 80))

Ответ: \(81\)