Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
1. Прибавить 1
2. Умножить на 3
3. Прибавить сумму цифр числа
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числe 11 результатом является число 60?
from functools import lru_cache
@lru_cache(None)
def sum_of_digits(number):
if number == 0:
return 0
else:
return number % 10 + sum_of_digits(number // 10)
def f(a, b):
if a == b:
return 1
elif a > b:
return 0
else:
return f(a + 1, b) + f(a * 3, b) + f(a + sum_of_digits(a), b)
print(f(11, 60))
Ответ: 66173