Сама задача:

людей разбили на

групп поровну. Если поровну не получается, то в некоторых группах будет на 1 человека больше, чем в других. Теперь надо выбрать

людей максимум по одному из каждой группы. Сколькими способами можно это сделать?
Решение:
Понятно, что при

нельзя подобрать такую группу, то есть число способов равно 0.
Далее, при

это просто

, где

- число людей в группах (с числом человек и числом человек плюс один), а

- число групп с числом человек и числом человек плюс один соответственно.
Далее, если получилось, что поделились идеально поровну (без остатка), то

, тоже понятно.
Вопрос:
А как быть в общем случае? Когда остаток от деления произвольный? Понятно, что надо считать число способов отобрать

групп из

первых групп, и

групп из m_2 вторых групп, чтобы

. В этом случае это число просто умножать на

. Но как найти все количества таких разбиений?