Автомат обрабатывает натуральное число N (128 ≤ N ≤ 255) по следующему алгоритму.
1. Строится восьмибитная двоичная запись числа N.
2. Все цифры двоичной записи заменяются на противоположные (0 на 1, 1 на 0).
3. Полученное число переводится в десятичную запись.
4. Из исходного числа вычитается полученное, разность выводится на экран.
Пример. Дано число N = 131. Алгоритм работает следующим образом.
1. Восьмибитная двоичная запись числа N: 10000011.
2. Все цифры заменяются на противоположные, новая запись: 01111100.
3. Десятичное значение полученного числа: 124.
4. На экран выводится число:
Какое число нужно ввести в автомат, чтобы в результате
Заметим, что инверсия двоичной восьмибитной записи числа в сумме с исходным числом дает 11111111, то есть 255. (В исходном примере: 10000011 + 01111100 = 11111111.) Следовательно, если исходное число
Поэтому, чтобы найти число, которое нужно ввести в автомат для
Ответ: 180.
Приведём другое решение на языке Python.
for n in range(128, 256):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
s = s.replace('1', '*')
s = s.replace('0', '1')
s = s.replace('*', '0')
r = int(s, 2) # перевод в десятичную систему
if n - r == 105:
print(n)

