Автомат обрабатывает натуральное число N (0 ≤ N ≤ 255) по следующему алгоритму.
1. Строится восьмибитная двоичная запись числа N.
2. Все цифры двоичной записи заменяются на противоположные
3. Полученное число переводится в десятичную запись.
4. Из нового числа вычитается исходное, полученная разность выводится на экран.
Пример. Дано число N = 13. Алгоритм работает следующим образом.
1. Восьмибитная двоичная запись числа N: 00001101.
2. Все цифры заменяются на противоположные, новая запись: 11110010.
3. Десятичное значение полученного числа 242.
4. На экран выводится число
Какое число нужно ввести в автомат, чтобы в результате
Заметим, что инверсия двоичной восьмибитной записи числа в сумме с исходным числом дает 11111111, то есть 255. (В исходном примере: 00001101 + 11110010 = 11111111.) Следовательно, если исходное число
Поэтому, чтобы найти число, которое нужно ввести в автомат для
Ответ: 72.
Примечание.
Заметим, что по условию из нового числа вычитается исходное, следовательно, для получения
Приведём другое решение на языке Python.
for n in range(0, 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 == 111:
print(n)
Приведём другое решение на языке Python.
a = str.maketrans('01', '10')
for N in range(0, 256):
R = bin(N)[2:].zfill(8)
R = str.translate(R, a)
if int (R, 2) - N == 111:
print (N)

