Задание 5. Информатика. ЕГЭ. Поляков-1782
- Просмотры: 20
- Изменено: 6 апреля 2025
На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом.
- Строится двоичная запись числа \(N.\)
- К этой записи дописывается (дублируется) последняя цифра.
- Затем справа дописывается \(0,\) если в двоичном коде числа \(N\) чётное число единиц, и \(1,\) если нечётное.
- К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным.
Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа \(N)\) является двоичной записью искомого числа \(R.\) Укажите минимальное число \(N,\) после обработки которого автомат получает число, большее \(160.\) В ответе это число запишите в десятичной системе.
Решение:
Python
def R(N):
bn = f'{N:b}'
ans = bn + bn[-1]
ans += str(bn.count('1') % 2)
ans += str(ans.count('1') % 2)
return int(ans, 2)
for N in range(1, 1000):
if R(N) > 160:
print(N)
break
Ответ: \(21\)