(Л. Шастин) Исполнитель преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
1. Вычти сумму всех цифр числа
2. Найди целую часть от деления на 2
3. Вычти 1
Первая из них уменьшает число на экране на сумму всех его цифр, вторая заменяет число на экране на целую часть от деления числа на 2, а третья уменьшает число на единицу.
Программа для исполнителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 40 результатом является число 10, и при этом траектория вычислений содержит число 25?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 1223 при исходном числе 10 траектория состоит из чисел 9, 4, 2, 1.
def F(a,b):
if a < b: return 0
if a == b: return 1
if a > b:
n = list(str(a))
su = 0
for elem in n:
su+=int(elem)
return F(a-su,b)+F(a//2,b)+F(a-1,b)
print(F(40,25)*F(25,10))