Задание 5. Информатика. ЕГЭ. Поляков-7456
- Просмотры: 492
- Изменено: 1 февраля 2025
(ЕГЭ-2024) На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом.
- Строится двоичная запись числа \(N.\)
- Далее эта запись обрабатывается по следующему правилу:
- если сумма цифр двоичной записи чётная, то к этой записи справа дописывается \(0,\) а два левых разряда заменяются на \(10;\)
- если сумма цифр двоичной записи нечётная, то к этой записи справа дописывается \(1,\) а два левых разряда заменяются на \(11.\)
Полученная таким образом запись является двоичной записью искомого числа \(R.\) Например, для исходного числа \(6 = 110_2\) результатом является \(1000_2 = 8,\) а для исходного числа \(4 = 100_2\) результатом является \(1101_2 = 13.\) Укажите минимальное число \(N,\) после обработки которого с помощью этого алгоритма получается число \(R,\) большее \(50.\) В ответе запишите это число в десятичной системе счисления.
Решение:
Python
def R(N):
bn = f'{N:b}'
if bn.count('1') % 2 == 0:
bn = '10' + bn[2:] + '0'
else:
bn = '11' + bn[2:] + '1'
return int(bn, 2)
for N in range(4, 50):
if R(N) > 50:
print(N)
break
Ответ: \(19\)