Найти количество чисел заданного порядка, модуль разницы соседних цифр которых не больше 1

Нужно найти количество чисел заданного порядка, модуль разницы соседних цифр которых не больше 1

То есть:
Для чисел порядка 1(все однозначные числа) = 9 (нет соседних цифр)
Для чисел порядка 2(двухзначные) = 26(10, 11, 20, 21, 22, 23... )

Реализация простого перебора не интересует.
Интересует есть ли формула по которой можно найти это количество.

Ответ:
goo.gl/nC0XIY

a(n) = Sum_{r=0..9} u(n,r) where u(n,r) = 0 if r<0 or r>9, u(1,0) = 0, u(1,r) = 1 for 1<=r<=9, and otherwise u(n,r) = u(n-1,r-1) + u(n-1,r) + u(n-1,r+1).

G.f.: -x*(3*x^4-18*x^3-9*x^2+28*x-9)/(x^5-6*x^4-x^3+10*x^2-6*x+1).


Спасибо
  • Вопрос задан
  • 2717 просмотров
Решения вопроса 1
Mrrl
@Mrrl
Заводчик кардиганов
Формула, несомненно, существует. Правда, в ней будут присутствовать корни многочлена (z^5-6*z^4+10*z^3-z^2-6*z+1)*(z^5-4*z^4+2*z^3+5*z^2-2*z-1) (неразрешимого в радикалах), и выписать её совсем не просто. Но, при большой необходимости, возможно.
Впрочем, если в формуле может присутствовать матрица, то ответ такой:

(1 1 1 1 1 1 1 1 1 1)*(M^(n-1))*transpose(0 1 1 1 1 1 1 1 1 1),

где M - матрица 10х10, в которой в клетках (m,n), для которых abs(m-n)<2, стоят единицы, а в остальных клетках - нули.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
У вас уже неправильно, для двузначных будет (10, 11, 12, 21, 22, 23, 32, 33, 34...).
Модуль разницы:
myglbyq.png
Верхнюю оценку получить легко, 10*3(n-1), а вот точное число посчитать по формуле скорее всего не получится, 0 и 9 портят всю картину.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы