Task 105. Квартальные оценки

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 выражается формулой: 
Число сочетаний с повторениями

Реализация:

C#

https://gist.github.com/unilecs/c9c84f220a1e299c86978d5117828e20

Test:

https://dotnetfiddle.net/6Qnjsx

Report Page