Алгоритм получает на вход натуральное число 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 принадлежит отрезку [234 567 890; 567 891 234].
Приведём решение на языке Python.
otv = []
for n in range (567_891_234, 567_000_000, -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))
Ответ: 6566532230.
Приведём решение Андрея Субаева на языке Python.
necet = int('1' + bin(567891233)[2:] + '10', 2)
cet = int(bin(567891234)[2:] + '11', 2)
print(max(necet,cet))

