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

