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