Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены буквами.
A. Прибавь 3
B. Умножь на 2
C. Раздели нацело на 3
Программа для исполнителя — это последовательность команд.
Сколько существует программ, которые преобразуют исходное число 8 в число 33, и при этом команда C выполняется в программе не более одного раза?
Решение:
Решение на Python:
def F(x, y, c):
if c > 1:
return 0
if c == 1 and x > y:
return 0
if c == 0 and x > 3 * y + 2:
return 0
if x == y:
return 1
return F(x + 3, y, c) + F(x * 2, y, c) + F(x // 3, y, c + 1)
print(F(8, 33, 0))
Ответ: 342
Ответ:
342