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

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

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

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

При каком наименьшем исходном числе \(N > 100\) в результате работы алгоритма получится число, которое делится на \(4\) и не делится на \(8?\)

Решение:

Python


def R(N):
    bn = f'{N:b}'
    for _ in range(3):
        bn += bn[-1] if bn.count('0') == bn.count('1') else str(int(bn.count('1') < bn.count('0')))
    return int(bn, 2)

print(min(N for N in range(100, 500) if R(N) % 4 == 0 and R(N) % 8 != 0))

Ответ: \(135\)