Хорошо известны две комбинаторные формулы:

и

.
Первая дает число разных сочетаний размера

в случае, когда у нас

типов объектов, и все в одном экземпляре.
Вторая дает число разных сочетаний размера

в случае, когда у нас

типов объектов, и все в неограниченном количестве.
На практике часто встречается промежуточный случай, когда есть

типов объектов, причем объектов одного типа одно количество, другого типа - другое и т.д. Как получить число сочетаний из

типов объектов по

, если известны количества

объектов каждого типа?
Например, возьмем множество объектов

. Здесь

,

,

,

. Допустим, мы хотим найти количество всех различных сочетаний по

(

). Они будут такими:






Какая формула описывает их количество в общем случае?
Предположим, что

отсортированы по возрастанию.
Очевидно, что если

, то задача сводится к неограниченному случаю

.
Если

, но

то можно из неограниченного случая

вычесть число комбинаций, в которых объект с количеством

используется более

раз, т.е.

. Такое же вычитание можно сделать и для

, если одновременно

,

, но

Но если суммарное количество обьектов двух (а тем более нескольких) самых малочисленных типов слишком мало, т.е.

, то просто так вычесть независимо все лишние комбинации отдельно для

и отдельно для

не получается. Некоторые комбинации удаляются дважды. Например, если применить этот принцип к задаче выбора четырех разных объектов из набора

то "запрещенная" комбинация

вычитается два раза отдельно по

и отдельно по

.