На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число чётное, то к двоичной записи числа слева
б) если число нечётное, то к двоичной записи числа слева
Полученная таким образом запись является двоичной записью искомого числа R.
Например, для исходного числа 410 = 1002 результатом будет являться число 2010 = 101002, а для исходного числа 510 = 1012 результатом будет являться число 5310 = 1101012.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее,
Рассмотрим числа,
44210 = 1101110102 — не может являться результатом работы алгоритма,
44310 = 1101110112 — не может являться результатом работы алгоритма,
44410 = 1101111002 — не может являться результатом работы алгоритма,
44510 = 1101111012 — может являться результатом работы алгоритма, поскольку первая слева цифра — 1, а последние две — 01. Это число получено в результате обработки числа 1011112 = 4710.
Ответ: 47.
Приведём другое решение на языке Python.
a = []
for n in range(1, 100):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
if n % 2 == 0:
s = "10" + s
else:
s = "1" + s + "01"
r = int(s, 2) # перевод в десятичную систему
if r > 441:
a.append(n)
print(min(a))

