Task 105. Квартальные оценки
UniLecsЗадача: на канале "U" подписчик успешно сдал N задач, за ктр в сумме получил T баллов. Наименьший балл для любой задачи, при ктр задача засчитывается, равен P баллам. Необходимо подсчитать кол-во способов, ктр подписчик мог заработать баллы по задачам.
Входные данные: N, T, P - натуральные числа, от 1 до 50.
Вывод: кол-во способов, ктр подписчик мог заработать T баллов.
Пример:
N = 2; T = 5; P = 2
Кол-во способов: 2
1. 2 и 3 балла
2. 3 и 2 балла
Идея: кол-во способов, ктр подписчик мог заработать T баллов, равно кол-ву разложений числа (T - N * P) на N слагаемых.
А такая задача сводится к решению комбинаторной задачи через сочетания с повторениями.
Определение. Если каждому элементу некоторого конечного множества поставлено в соответствие целое неотрицательное число — кратность данного элемента, то говорят, что задано сочетание с повторениями. Сумма k кратностей всех элементов называется порядком сочетания.
Число сочетаний с повторениями из n элементов по k выражается формулой:
Реализация:
https://gist.github.com/unilecs/c9c84f220a1e299c86978d5117828e20
Test: