Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
1. Прибавить
2. Умножить на
3. Прибавить
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числe результатом является число
, при этом траектория вычислений содержит число
.
Траектория вычислений — это последовательность результатов выполнения всех команд программы. Например, для программы при исходном числе
траектория будет состоять из чисел
.
Решение 1 (Рекурсия)
def f(x, y):
if x == y:
return 1
if x > y:
return 0
else:
return f(x + 1, y) + f(x + 3, y) + f(x * 2, y)
print(f(2, 10) * f(10, 30))
Решение 2 (Динамика)
a = [0] * 31 * 3
a[2] = 1
for i in range(2, 30):
if i == 10:
b = a[i]
a = [0] * 31 * 3
a[i] = b # удалили все значения кроме ячейки a[15]
a[i + 3] += a[i]
a[i * 2] += a[i]
a[i + 1] += a[i]
print(a[30])