x1+...+xk = n (2)#11551

x1+...+xk = n (2) (Həll təhlili)

n + k - 1 mövqedən ibarət ardıcıllığı nəzərdən keçirək. mövqeyə qoymaq lazımdır. k - 1 mövqe üçün '+' simvolu qoyulmalıdır (beləliklə, toplananları əldə etmək üçün).

Hər hansı bir mövqeyə və '+' işarələrinin qoyulması müəyyən bir uyğun həllə cavab verəcəkdir. Məsələn, x_1 + x_2 + x_3 = 4 (4 ədəd və 2 üstəgəl) tənliyinin bəzi həlləri:

n + k - 1 mövqeyə k - 1 üstəgəl işarəsi daxil etməliyik. Bunu C_{n+k-1}^{k-1} üsulla etmək mümkündür.

Nümunə

x_1 + x_2 + x_3 = 4 tənliyini nəzərdən keçirək. Onun həll yolları olacaqdır:

Cəmi 3 + 6 + 3 + 3 = 15 həll var.

Alqoritmin icrası

Cnk funksiyası C_n^k binomial əmsalını hesablayır.

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;
}

Proqramın əsas hissəsi. Giriş məlumatlarını oxuyuruq.

scanf("%lld %lld", &k, &n);

Cavabı C_{n+k-1}^{k-1} hesablayır və çıxardırıq.

res = Cnk(k - 1, n + k - 1); 
printf("%lld\n", res);

Python icrası

import math

Giriş məlumatlarını oxuyuruq.

k, n = map(int,input().split())

Cavabı C_{n+k-1}^{k-1} hesablayır və çıxardırıq.

res = math.comb(n + k - 1, k - 1)
print(res)