Розгляньмо послідовність із n + k - 1 позицій. У позиціях слід поставити . У k - 1 позицію слід поставити символ '' (щоб отримати доданків).
Будь-якій розстановці одиниць і знаків '' по позиціях відповідатиме деяке розв'язання заданого рівняння. Наприклад, розгляньмо деякі рішення рівняння x_1 + x_2 + x_3 = 4 (4 одиниці і плюса):

Нам слід вставити k - 1 плюс на n + k - 1 позицій. Це можна зробити C_{n+k-1}^{k-1} способами.
Приклад
Розгляньмо рівняння x_1 + x_2 + x_3 = 4. Його розв'язаннями будуть:
(4, 0, 0) і її перестановки
(3, 1, 0) і її перестановок
(2, 2, 0) і її перестановки
(2, 1, 1) і її перестановки
Усього маємо 3 + 6 + 3 + 3 = 15 рішень.
Реалізація алгоритму
Функція Cnk обчислює значення біноміального коефіцієнта C_n^k.
long long Cnk(long long k, long long n)
{
long long res = 1;
if (k > n - k) k = n - k;
for (long long i = 1; i <= k; i++)
res = res * (n - i + 1) / i;
return res;
}Основна частина програми. Читаємо вхідні дані.
scanf("%lld %lld", &k, &n);Обчислюємо і виводимо відповідь C_{n+k-1}^{k-1}.
res = Cnk(k - 1, n + k - 1);
printf("%lld\n", res);Python реалізація
import mathЧитаємо вхідні дані.
k, n = map(int,input().split())Обчислюємо і виводимо відповідь C_{n+k-1}^{k-1}.
res = math.comb(n + k - 1, k - 1)
print(res)