Задание 5. Информатика. ЕГЭ. Поляков-3454
- Просмотры: 21
- Изменено: 12 апреля 2025
Автомат обрабатывает десятичное натуральное число \(N\) по следующему алгоритму:
- Строится двоичная запись числа \(N.\)
- К полученному числу справа дописывается \(0,\) если в числе единиц больше, чем нулей; иначе дописывается \(1.\)
- Из середины двоичного числа убирается \(2\) разряда, если количество разрядов получилось четным, и \(3\) разряда, если нечетное.
- Результат переводится в десятичную систему.
Пример. Дано число \(N = 11.\) Алгоритм работает следующим образом.
- Двоичная запись числа \(N\): \(11 = 1011_2\)
- Единиц больше, чем нулей, новая запись \(10110_2.\)
- Длина нечётная, удаляем три средних разряда, новая запись \(10_2.\)
- Десятичное значение полученного числа \(2.\)
Для скольких различных значений \(N\) в результате работы автомата получается число \(58?\)
Решение:
Python
def R(N):
bn = f'{N:b}'
bn += str(int(bn.count('1') <= bn.count('0')))
m = len(bn) // 2
return int(bn[:m-1] + bn[-m+1:], 2)
#print(R(11))
print(len([N for N in range(11, 10_000) if R(N) == 58]))
Ответ: \(11\)