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