Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Если число N чётное, то к двоичной записи слева дописываются цифры 11.
В противном случае (число N нечётное) к двоичной записи слева дописывается цифра 1, а справа — цифры 10.
3. Результатом работы алгоритма становится десятичная запись полученного числа R.
Пример. Дано число N = 13. Алгоритм работает следующим образом.
1. Строим двоичную запись: 1310 = 11012.
2. Число 13 нечётно. Дописываем 1 слева и 10 справа, получаем 11101102 = 11810.
3. Результат работы алгоритма R = 118.
Укажите максимальное число R, которое может быть результатом работы данного алгоритма, при условии, что N принадлежит отрезку [123 456 789; 456 789 012].
Приведём решение на языке Python.
otv = []
for n in range (456_789_012, 456_000_000 + 1, -1):
s = bin(n)[2:]
if n % 2 == 0:
s = '11' + s
else:
s = '1' + s + '10'
r = int (s,2)
otv.append(r)
print(max(otv))
Ответ: 3974639694.

