দুটি সংখ্যা n এবং k দেওয়া হয়েছে। n আকারের এবং যোগফল k এমন কতগুলো অ্যারে বানানো যায় তা বের করতে হবে।
সূত্র: C(k-1, n-1) = (k-1)! / ((n-1)! * (k-n)!)
উদাহরণ
ইনপুট: n = 1, k = 2 → আউটপুট: 1 (শুধু [২])
ইনপুট: n = 2, k = 4 → আউটপুট: 3 ([১,৩], [২,২], [৩,১])
অ্যালগরিদম
nএবংkইনিশিয়ালাইজ করুন।- ফ্যাক্টোরিয়াল ফাংশন লিখুন।
- বাইনোমিয়াল কোইফিসিয়েন্ট
C(k-1, n-1)বের করুন। - ফলাফল ফেরত দিন।
সি++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;
int factorial(int n) {
int result = 1;
for (int i = 2; i <= n; i++) result *= i;
return result;
}
int getNumberOfArraysCount(int n, int k) {
// C(k-1, n-1) = (k-1)! / ((n-1)! * (k-n)!)
return factorial(k - 1) / (factorial(n - 1) * factorial(k - n));
}
int main() {
int N = 5, K = 8;
cout << getNumberOfArraysCount(N, K) << endl; // C(7,4) = 35
return 0;
}
আউটপুট
35