Задание 5. Информатика. ЕГЭ. Поляков-7370
- Просмотры: 279
- Изменено: 24 ноября 2024
(Н. Леко) Автомат обрабатывает десятичное целое число \(N\) (\(0 \leqslant N \leqslant 255\)) по следующему алгоритму:
- Строится восьмибитная двоичная запись числа \(N\).
- Все разряды двоичной записи инвертируются (\(0\) заменяется на \(1\), \(1\) на \(0\)).
- Если полученное число кратно \(5\), то в двоичной записи старшие три разряда заменяются на \(100\), в противном случае в двоичной записи старшие три разряда заменяются на \(101\).
Полученная таким образом запись является двоичной записью искомого числа \(R\). Сколько существует чисел \(N\), из которых в результате выполнения алгоритма может получиться число \(180\)?
Решение:
Python
def R(N):
s = bin(N)[2:]
if len(s) < 8:
s = '0' * (8 - len(s)) + s
t = ''
for ch in s:
t += '0' if ch == '1' else '1'
i = int(t, base = 2)
f = '100' if i % 5 == 0 else '101'
return int(f + t[3:], base=2)
q = 0
for N in range(256):
if R(N) == 180:
q += 1
print(q)
Ответ: \(6\)