На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются разряды по следующему правилу:
а) если число четное, то к двоичной записи числа в конце
б) если число нечетное, то к двоичной записи числа в конце
Полученная таким образом запись является двоичной записью искомого числа R. Укажите наибольшее число R,
Заметим, что если число нечётное, то в конец его двоичной записи добавляются цифры 01, а если чётное — цифры 10.
Рассмотрим числа,
10810 = 110 11002 — не может являться результатом работы алгоритма.
10710 = 110 10112 — не может являться результатом работы алгоритма.
10610 = 110 10102 — является результатом работы алгоритма.
Ответ: 106.
Приведём другое решение на языке Python.
for i in range(100, 0, -1):
s = bin(i)[2:] # перевод в двоичную систему
s = str(s)
if i % 2 == 0:
s += "10"
else:
s += "01"
r = int(s, 2) # перевод в десятичную систему
if r < 109:
print(r)
break

