На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются справа ещё два разряда по следующему правилу: если
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью числа — результата работы данного алгоритма.
Укажите максимальное число N, для которого результат работы алгоритма будет
Заметим, что если число чётное, то в конец его двоичной записи добавляются цифры 00, а если нечётное — цифры 11.
Рассмотрим числа,
13310 = 1000 01012 — не может являться результатом работы алгоритма.
13210 = 1000 01002 — не может являться результатом работы алгоритма.
13110 = 1000 00112 — не может являться результатом работы алгоритма.
13010 = 1000 00102 — не может являться результатом работы алгоритма.
12910 = 1000 00012 — не может являться результатом работы алгоритма.
12810 = 1000 00002 — может являться результатом работы алгоритма.
Выполним обратное преобразование числа 128 согласно алгоритму. Получим ответ — 32.
Ответ: 32.
Приведём другое решение на языке Python.
for i in range(100, 0, -1):
s = bin(i)[2:] # перевод в двоичную систему
s = str(s)
if i % 2 == 0:
s += "00"
else:
s += "11"
r = int(s, 2) # перевод в десятичную систему
if r < 134:
print(i)
break

