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

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

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

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

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

Решение:

Python


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

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

Ответ: \(55\)