На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число чётное, то к двоичной записи числа слева
б) если число нечётное, то к двоичной записи числа слева
Полученная таким образом запись является двоичной записью искомого числа R.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число, большее,
Рассмотрим числа, большие,
5310 = 1101012 — не может являться результатом работы алгоритма.
5410 = 1101102 — не может являться результатом работы алгоритма.
5510 = 1101112 — не может являться результатом работы алгоритма.
5610 = 1110002 — является результатом работы алгоритма для числа 11002 = 1210.
5710 = 1110012 — не может являться результатом работы алгоритма.
5810 = 1110102 — не может являться результатом работы алгоритма.
5910 = 1110112 — не может являться результатом работы алгоритма.
6010 = 1111002 — является результатом работы алгоритма для числа 11102 = 1410.
6110 = 1111012 — не может являться результатом работы алгоритма.
6210 = 1111102 — не может являться результатом работы алгоритма.
6310 = 1111112 — является результатом работы алгоритма для числа 112 = 310.
Для чисел 110 и 210 после построения по ним новых чисел R будут получаться числа,
Ответ: 3.
Примечание.
Заметим, что при построении двоичной записи числа N левые (незначащие) нули не записываются. Например, число 1 будет представлено
Приведём другое решение на языке Python.
for n in range(1, 100):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
if s[-1] == '0':
s = '1' + s + '0'
else:
s = '11' + s + '11'
r = int(s, 2) # перевод в десятичную систему
if r > 52:
print(n)
break

