Автомат обрабатывает натуральное число по следующему алгоритму:
- Строится двоичная запись числа
.
- Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на
.
- Предыдущий пункт повторяется для записи с добавленной цифрой.
- Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число . Алгоритм работает следующим образом:
- Двоичная запись числа
.
- Сумма цифр двоичной записи
, остаток от деления на
равен
, новая запись
.
- Сумма цифр полученной записи
, остаток от деления на
равен
, новая запись
.
- На экран выводится число
.
Какое наименьшее число, большее , может появиться на экране в результате работы автомата?
for n in range(1, 10000):
r = bin(n)[2:]
r = r + str(r.count(’1’) % 2)
r = r + str(r.count(’1’) % 2)
r = int(r, 2)
if r > 150:
print(r)
break
Ответ: 154