Автомат обрабатывает натуральное число N по следующему алгоритму:
1. Строится двоичная запись числа N.
2. В конец двоичной записи добавляются две первые цифры этой записи в обратном порядке.
3. Результат переводится в десятичную систему и выводится на экран.
Пример.Дано число N = 11. Алгоритм работает следующим образом:
1. Двоичная запись числа N: 1011.
2. В конец записи добавляются цифры 01 — первые две цифры в обратном порядке (сначала вторая, затем первая), получается 101101.
3. На экран выводится число 45.
При каком наименьшем исходном N результат на экране автомата будет больше 90?
Число на выходе должно превышать 9010 = 10110102, тогда исходное
Рассмотрим числа N, большие или
2210 = 101102, результатом работы алгоритма будет число 10110012 = 8910, что
2310 = 101112, результатом работы алгоритма будет число 10111012 = 9310, что подходит под условие.
Таким образом, ответ — 23.
Ответ: 23.
Приведём другое решение на языке Python.
for n in range(2, 100): # начинаем с 2, так как число 1 имеет только одну цифру
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
s += s[1] + s[0]
r = int(s, 2) # перевод в десятичную систему
if r > 90:
print(n)
break
Приведём решение Ильи Андрианова на языке Python.
for n in range(1, 10000):
s = f'{n:b}'
s += s[::-1][:2]
r = int(s, 2)
if r > 90:
print(n)
break
Приведём решение Алексея Кудрякова на языке Python.
for N in range(1, 5000):
n2 = f'{N:b}'
if len(n2) < 2:
n2 = n2.zfill(4)
n2 = n2 + n2[1] + n2[0]
else:
n2 = n2 + n2[1] + n2[0]
r = int(n2, 2)
if r > 90:
print(N)
break

