Алгоритм вычисления значения функции F(n), где n — целое число, задан следующими соотношениями:
если
если
Определите количество
Приведём решение на языке Python.
from functools import *
# граничное значение
a = list(map(int, str(2**63-1)))
@cache
def f(s, l, fl):
# если последовательность нужной длины, проверяем, что сумма нам подходит,
# и выходим из рекурсии.
if l == 0: return s == 159
# проверяем ограниченные подпоследовательности большей длины
return sum(f(s+x, l-1, fl and (x == a[-l])) for x in range([10, a[-l]+1][fl]))
# ответ - количество ограниченных последовательностей необходимой длины
print(f(0, len(a), 1))
Ответ: 34602572.

