Задача #1353
Количество программ
(С. Чайкин) Исполнитель преобразует число на экране. У исполнителя есть три команды, которым обозначены латинскими буквами:
A. Прибавить 1
B. Умножить на 3
C. Прибавить 5
Программа для исполнителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 3 результатом является число 69, и при этом траектория вычислений содержит последовательность команд CAC?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 3 траектория состоит из чисел 8, 24, 26.
Войдите, чтобы история ответов и статистика сохранялись.
Решение
Ответ
56729496
from functools import *@lru_cache(None)def f(s, e, p1='', p2='', valid=False):if s > e: return 0if s == e: return validcount = 0count += f(s+1, e, 'A', p1, valid)count += f(s*3, e, 'B', p1, valid)valid = valid or (p2 + p1 + 'C' == 'CAC')count += f(s+5, e, 'C', p1, valid)return countprint(f(3, 69))