Автомат обрабатывает натуральное число N по следующему алгоритму:
1. Строится двоичная запись числа N.
2. Запись «переворачивается», то есть читается справа налево. Если при этом появляются ведущие нули, они отбрасываются.
3. Полученное число переводится в десятичную запись и выводится на экран.
Пример. Дано число N = 58. Алгоритм работает следующим образом.
1. Двоичная запись числа N: 111010.
2. Запись справа налево: 10111 (ведущий ноль отброшен).
3. На экран выводится десятичное значение полученного числа 23.
Какое наибольшее число, не превышающее 100, после обработки автоматом даёт результат 11?
Рассмотрим действия алгоритма в обратном порядке. Переведём 11 в двоичную систему счисления: 1110 = 1011. Рассмотрим числа, из которых можно получить данное число.
11012 = 1310
1 10102 = 2610
11 01002 = 5210
110 10002 = 10410
Таким образом, наибольшее число, удовлетворяющее условию задачи равно 52.
Ответ: 52.
Приведём другое решение на языке Python.
for n in range(100, 1, -1):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
s = s[::-1]
s = s[s.find('1'):]
r = int(s, 2) # перевод в десятичную систему
if r == 11:
print(n)
break

