Исполнитель Пирожок преобразует число, записанное на экране.
У исполнителя есть команды, которым присвоены номера:
- Прибавить
- Прибавить
- Умножить на
Первая команда увеличивает число на экране на , вторая — на
, третья — удваивает число. Программа для исполнителя Пирожок — это последовательность команд.
Сколько существует программ, для которых при исходном числе результатом является число
и при этом траектория вычислений не содержит числа
и
? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы
при исходном числе
траектория будет состоять из чисел
,
,
.
Решение 1
a = [0] * 274
a[256] = 1
for i in range(257, 274):
a[i] = a[i - 3] + a[i - 4] + a[i // 2] * (i % 2 == 0)
if i == 262 or i == 270:
a[i] = 0
print(a[273])
Решение 2
Пусть — количество программ, которое число 1 преобразует в число
. Тогда верно следующее утверждение:
Заметим, что — это больше числа, которое нам нужно найти, значит 3-я команда нам не понадобится. Составим уравнение:
Составим таблицу по данному уравнению:
Так как траектория не должна содержать число 262, то . Продолжим заполнение таблицы:
Аналогично .
Отсюда ответ — 2.