Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. В конец записи (справа) дописывается вторая справа цифра двоичной записи.
3. В конец записи (справа) дописывается вторая слева цифра двоичной записи.
4. Результат переводится в десятичную систему.
Пример. Дано число N = 13. Алгоритм работает следующим образом:
1. Двоичная запись числа N: 1101.
2. Вторая справа цифра 0, новая запись: 11010.
3. Вторая слева цифра 1, новая запись: 110101.
4. Результат работы алгоритма R = 53.
При каком наименьшем числе N в результате работы алгоритма получится R > 150? В ответе запишите это число в десятичной системе счисления.
Число на выходе должно превышать 15010 = 100101102, тогда исходное число N должно быть больше или равно 1001012 = 3710.
Рассмотрим числа N, большие или
3710 = 1001012, результатом работы алгоритма будет число 100101002 = 14810, что
3810 = 1001102, результатом работы алгоритма будет число 100110102 = 15410, что подходит под условие.
Таким образом, ответ — 38.
Ответ: 38.
Приведём другое решение на языке Python.
for n in range(2, 100): # начинаем с 2, так как число 1 имеет только одну цифру
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
s += s[-2]
s += s[1]
r = int(s, 2) # перевод в десятичную систему
if r > 150:
print(n)
break

