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

Просмотры: 66
Изменено: 17 февраля 2025

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

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

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

Например, для числа \(60\) алгоритм будет выполняться следующим образом:

  1. \(N = 60 = 111100_2.\)
  2. \(1111000_2\) (\(4\) единицы \(\to\) дописываем \(0)\)
  3. \(11110001_2\) \((N\) — четное \(\to\) дописываем \(1)\) \(= 241_{10}.\)

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

Решение:

Python


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

print(min(R(x) for x in range(1, 1000) if R(x) > 204))

Ответ: \(211\)