На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописывается справа два нуля, если число четное, или две единицы в противном случае
Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число
Заметим, что если число чётное, то в конец его двоичной записи добавляются цифры 00, а если нечётное — цифры 11.
Рассмотрим числа,
9310 = 101 11012 — не может являться результатом работы алгоритма.
9210 = 101 11002 — не может являться результатом работы алгоритма.
9110 = 101 10112 — не может являться результатом работы алгоритма.
9010 = 101 10102 — не может являться результатом работы алгоритма.
8910 = 101 10012 — не может являться результатом работы алгоритма.
8810 = 101 10002 — может являться результатом работы алгоритма.
Выполним обратное преобразование числа 88 согласно алгоритму. Получим ответ — 22.
Ответ: 22.
Приведём другое решение на языке 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 < 94:
print(i)
break

