Задание 5. Информатика. ЕГЭ. Поляков-7370

Просмотры: 279
Изменено: 24 ноября 2024

(Н. Леко) Автомат обрабатывает десятичное целое число \(N\) (\(0 \leqslant N \leqslant 255\)) по следующему алгоритму:

  1. Строится восьмибитная двоичная запись числа \(N\).
  2. Все разряды двоичной записи инвертируются (\(0\) заменяется на \(1\), \(1\) на \(0\)).
  3. Если полученное число кратно \(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\)