Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. Вместо последней (самой правой) двоичной цифры дважды записывается вторая слева цифра двоичной записи.
3. Результат переводится в десятичную систему.
Пример. Дано число N = 19. Алгоритм работает следующим образом:
1. Двоичная запись числа N: 10011.
2. Вторая слева цифра 0, единица в конце записи заменяется на два нуля, новая запись: 100100.
3. Результат работы алгоритма R = 36.
При каком наименьшем числе N в результате работы алгоритма получится R > 92? В ответе запишите это число в десятичной системе счисления.
Число на выходе должно превышать 9210 = 10111002. Заметим, что можно рассматривать только те числа, большие 9210, у которых в двоичной записи на конце стоят либо две единицы, либо два нуля. Также заметим, что для числа 9210 исходными числами могли быть либо 1011102, либо 1011112, ни одно из них нам не подходит, поскольку после работы алгоритма не получится числа, большего 92. Рассмотрим числа 1100002 и 1100012. Первое из них меньше, применим алгоритм к нему. В результате работы алгоритма получится число 11000112 = 99, что
Таким образом, ответ — 1100002 = 4810.
Ответ: 48.
Приведем другое решение.
Заметим, что в результате применения алгоритма к числам, различающимся только последней цифрой двоичной записи, получаются одинаковые результаты. В остальных случаях большим исходным числам соответствует больший результат. Рассмотрим числа, большие 9210 = 10111002, и выберем наименьшее из них, которое может являться результатом работы алгоритма.
9310 = 10111012 — не может являться результатом работы алгоритма.
9410 = 10111102 — не может являться результатом работы алгоритма.
9510 = 10111112 — не может являться результатом работы алгоритма.
9610 = 11000002 — не может являться результатом работы алгоритма.
9710 = 11000012 — не может являться результатом работы алгоритма.
9810 = 11000102 — не может являться результатом работы алгоритма.
9910 = 11000112 — может являться результатом работы алгоритма, может быть получено из числа 1100002 = 4810.
Таким образом, ответ — 1100002 = 4810.
Приведём другое решение на языке Python.
for n in range(4, 100):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
s = s[0:len(s)-1]
s += s[1] * 2
r = int(s, 2) # перевод в десятичную систему
if r > 92:
print(n)
break
Приведём решение Лилии Салимуллиной на языке Python.
for n in range(4,100):
r = bin(n)[2:]
r = r[:-1] + r[1] * 2
r = int(r,2)
if r > 92:
print(n)
break

