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

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

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

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

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

Например, для исходного числа \(4 = 100_2\) результатом будет являться число \(8 = 1000_2,\) а для исходного числа \(6 = 110_2\) результатом будет являться число \(12 = 1100_2.\)

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

Решение:

Python


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

print(max(R(N) for N in range(2, 450) if R(N) < 450))

Ответ: \(444\)