Алгоритм получает на вход натуральное число 1 » class=»math» src=»/images/inform/quest/quest-3227-1.svg» width=»auto»> и строит по нему новое число
следующим образом:
- Строится двоичная запись числа
.
- Вместо последней (самой правой) двоичной цифры дважды записывается вторая слева цифра двоичной записи.
- Результат переводится в десятичную систему.
При каком наименьшем числе в результате работы алгоритма получится
58 » class=»math» src=»/images/inform/quest/quest-3227-5.svg» width=»auto»>? В ответе запишите это число в десятичной системе счисления.
Аналитическое решение:
Возьмем число . Видим, что вторая слева цифра и последние
совпадают, значит обрубаем
последние цифры и получаем
, но тут не хватает одной цифры, которую удалили, и наименьшее тут будет являться
, поэтому допишем его
.
Решение программой:
for i in range(2, 1000):
s = bin(i)[2::]
s = s[:len(s) - 1] + s[1] * 2
if int(s, 2) > 58:
print(i)
break