Задание 5. Информатика. ЕГЭ. Поляков-3910
- Просмотры: 17
- Изменено: 14 апреля 2025
Алгоритм получает на вход натуральное число \(N > 1\) и строит по нему новое число \(R\) следующим образом:
- Строится двоичная запись числа \(N.\)
- Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется её последняя цифра. В противном случае в конец записи добавляется цифра, которая встречается реже.
- Шаг 2 повторяется ещё два раза.
- Результат переводится в десятичную систему счисления.
При каком наибольшем исходном числе \(N < 100\) в результате работы алгоритма получится число, которое делится на \(4\) и не делится на \(8?\)
Решение:
Python
def R(N):
bn = f'{N:b}'
for _ in range(3):
bn += bn[-1] if bn.count('0') == bn.count('1') else str(int(bn.count('1') < bn.count('0')))
return int(bn, 2)
print(max(N for N in range(2, 100) if R(N) % 4 == 0 and R(N) % 8 != 0))
Ответ: \(49\)