Задание 5. Информатика. ЕГЭ. Поляков-4194
- Просмотры: 15
- Изменено: 14 апреля 2025
(С. Скопинцева) Алгоритм получает на вход натуральное число \(N > 1\) и строит по нему новое число \(R\) следующим образом:
- Число \(N\) переводим в двоичную запись.
- К этой записи справа дописывается один разряд по следующему правилу: если количество единиц в двоичной записи числа больше количества нулей, то справа дописывается единица, иначе дописывается \(0.\)
- К полученной записи повторно применяется алгоритм из п. 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\)