Задание 5. Информатика. ЕГЭ 2024. Крылов-6
- Просмотры: 121
- Изменено: 25 ноября 2024
На вход алгоритма подаётся натуральное число \(N\). Алгоритм строит по нему новое число \(R\) следующим образом.
- Строиться двоичная запись числа \(N\).
- Далее, если исходное число чётное, то справа к построенной двоичной записи числа \(N\) приписывается \(0\), если нечётное, то приписывается \(1\).
- Далее полученная на втором шаге алгоритма запись обрабатывается по следующему правилу:
- если количество единиц в двоичной записи кратно трём, то в этой записи два левых разряда заменяются на \(11\);
- если количество единиц в двоичной записи некратно трём, то в этой записи два левых разряда заменяются на \(10\).
Полученная таким образом запись является двоичной записью искомого числа \(R\).
Например, для исходного числа \(6 = 110_2\) результатом является число \(1000_2 = 8_{10}\), а для исходного числа \(3 = 11_2\) это число \(111_2 = 7_{10}\).
Укажите максимальное число \(N\), после обработки которого с помощью этого алгоритма получается число \(R\), не большее, чем \(37\). В ответе запишите это число в десятичной системе счисления.
Решение:
Python
def R(N):
b = bin(N)[2:]
b += b[-1]
temp = list(b)
temp[1] = '1' if b.count('1') % 3 == 0 else '0'
return int(''.join(temp), 2)
ans = []
for N in range(7, 1000):
if R(N) < 38:
ans.append(N)
print(ans[-1])
Ответ: \(25\)