Разбор
Рассмотрим последовательность из позиций. В позициях следует поставить . В позицию следует поставить символ '' (чтобы получить слагаемых).
Любой расстановке единиц и знаков '' по позициям будет соответствовать некоторое решение заданного уравнения. Например, рассмотрим некоторые решения уравнения единицы и плюса):
Нам следует вставить плюс на позиций. Это можно сделать способами.
Пример
Рассмотрим уравнение . Его решениями будут:
и ее перестановки
и ее перестановок
и ее перестановки
и ее перестановки
Всего имеется решений.
Реализация алгоритма
Функция Cnk вычисляет значение биномиального коэффициента .
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);
Вычисляем и выводим ответ .
res = Cnk(k - 1, n + k - 1); printf("%lld\n", res);
Python реализация
import math
Читаем входные данные.
k, n = map(int,input().split())
Вычисляем и выводим ответ .
res = math.comb(n + k - 1, k - 1) print(res)