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

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

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

  1. Строится двоичная запись числа \(N.\)
  2. К этой записи дописывается (дублируется) последняя цифра.
  3. Затем справа дописывается \(0,\) если в двоичном коде числа \(N\) чётное число единиц, и \(1,\) если нечётное.
  4. К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным.

Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа \(N)\) является двоичной записью искомого числа \(R.\) Укажите минимальное число \(R,\) большее \(105,\) которое могло получиться в результате работы автомата. В ответе это число запишите в десятичной системе.

Решение:

Python


def R(N):
    bn = f'{N:b}'
    ans = bn + bn[-1]
    ans += str(bn.count('1') % 2)
    ans += str(ans.count('1') % 2)
    return int(ans, 2)

print(min(R(N) for N in range(1, 1000) if R(N) > 105))

Ответ: \(111\)