Выскажу и свое мнение. Соглашаясь с подходом вычисления коэфф при производящей функции, тем не менее как программист предпочитаю любой программный алгоритм. Даже грубой силы , т.е. перебором по всем векторам


кол-ва номиналов

-вектор номиналов монет
Находит не только количество вариантов но и сами варианты. Если наложить доп. ограничения по количеству монет номиналов типа

-тоже нет проблем. Программа легко и к этому адаптируется.
Именно такая практическая задача востребована в жизни и у любого кассира и у разменного автомата.
Пример результата расчета (
разделитель меж тройками -запятая)


А если наложить дополнительно ограничения по количествам номиналов

то количество решений резко снизится - cтанет 6