На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа
2) К этой записи дописываются разряды по следующему правилу:
а) если число чётное, то к двоичной записи числа в конце дописывается
б) если число нечётное, то к двоичной записи числа в конце дописывается
Полученная таким образом запись является двоичной записью искомого числа . Укажите наибольшее число
меньшее
, которое может получиться после обработки этого алгоритма. В ответе запишите это число в десятичной записи.
Рассмотрим первое число . Переведем в двоичную сс и получим
. Отрубим две последние цифры и получим число нечетное, а значит должно было добавиться
. Значит не подходит.
Похоже это число мы сразу можем угадать. У нас есть и к нему должно добавить
. Получаем число
. (Число
также не подходит т.к.
)
Решение №2
ans = 0
for i in range(1000):
s = bin(i)[2::]
if i % 2 == 0:
s += ’11’
else:
s += ’01’
if int(s, 2) < 128:
ans = max(ans, int(s, 2))
print(ans)