Автомат обрабатывает натуральное число N по следующему алгоритму:
1. Строится двоичная запись числа N без ведущих нулей.
2. Если в полученной записи единиц больше, чем нулей, то справа приписывается единица. Если нулей больше или нулей и единиц поровну, справа приписывается ноль.
3. Полученное число переводится в десятичную запись и выводится на экран.
Пример. Дано число N = 13. Алгоритм работает следующим образом.
1. Двоичная запись числа N: 1101.
2. В записи больше единиц, справа приписывается единица: 11011.
3. На экран выводится десятичное значение полученного числа 27.
Какое наименьшее число, превышающее 80, может получиться в результате работы автомата?
Рассмотрим числа,
8110 = 10100012 — не может являться результатом работы алгоритма.
8210 = 10100102 — является результатом работы алгоритма.
Ответ: 82.
Приведём другое решение на языке Python.
for n in range(1, 100):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
s = s[s.find('1'):]
if s.count('1') > s.count('0'):
s += '1'
else:
s += '0'
r = int(s, 2) # перевод в десятичную систему
if r > 80:
print(r)
break

