Alex FoxЯвных формул, боюсь, мы не получим.
Но "подступиться" можно, например, так.
Пусть
количество строчек в вашей таблице.
Посмотрим на таблицу внимательно: шо мы видим?
Есть куча строчек, где первая цифра - 0, и есть еще куча - где не 0.
Сколько чисел в первой куче? Написав на первом месте 0, мы получили точно такую же задачу, токо с меньшим
.
Сколько - во второй? Если низя на первом (и на последующих) месте писать 0, а все остальное моно - дык это опять такая же задача, но с меньшим
. И что-то это сильно напоминает... Ба, да это ж треугольник Паскаля! Его элементы - биноминальные к-ты.
Ой, надо же ,
, как и должно было быть для сочетаний с повторениями.
Давайте только считать наш тр-к прямоугольным...Повернем его, и уложим на первый квадрант клетчатой плоскости.
Нумерация клеточек: от 0 до...по горизонтали, и такая же - по вертикали.
Пусть
номер строчки таблицы, в которой мы хотим записать число,
- общее кол-во чисел в таблице, число
стоит в клетке с номерами
. Ясно, что должно быть
. Число
равно сумме двух: левого
, и нижнего
соседей. Пусть
.
Будем идти из
по столбцу вниз, пока не встретим число, меньшее
. Тут мы затормозим; количество сделанных шагов и есть искомый первый символ. Далее надо пересчет, рекурсия, и т.д.
Т.е., алгоритм вполне реализуем; бин. к-ты можно считать последовательно, сложность алгоритма - порядка
.