Исполнитель преобразует число на экране.
У исполнителя есть две команды, которые обозначены латинскими буквами:
A. вычти 1
B. найди целую часть от деления на 2
Программа для исполнителя — это последовательность команд.
Сколько существует программ, которые преобразуют число 51 в число 7, и при этом траектория вычислений содержит числа 15 и 17, но не содержит числа 32?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ABA при исходном числе 7 траектория состоит из чисел 6, 3, 2.
Приведём решение на языке Python.
def f(x, y):
if x < y or x == 32:
return 0
if x == y:
return 1
else:
return f(x - 1, y) + f(x // 2, y)
print(f(51, 17) * f(17, 15) * f(15, 7))
Ответ: 54.

