Исполнитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Сделай нечётное
Выполняя первую команду, исполнитель увеличивает число на 1, а выполняя вторую – из числа x получает число 2x+1. Сколько существует программ, для которых при исходном числе 1 результатом является число 25 и при этом траектория вычислений не содержит число 21?
def f(n, m):
if n == m:
return 1
if n > m or n == 21:
return 0
if n < m:
return f(n+1, m) + f(n*2 + 1, m)
print(f(1, 25))
Ответ: 20