Задание 5. Информатика. ЕГЭ. Шастин. 19.01.2025

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

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

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

Например, для исходного числа \(6 = 110_2\) результатом является число \(10110_2 = 22.\)

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

Решение:

Python


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

print(max([R(x) for x in range(1, 1000) if R(x) < 100]))

Ответ: \(97\)