I am trying to solve a very simple task about finding nCk when 1<=n,k<=50. I can't seem to find a way of outputting the result for very large numbers like 50 in C++. My algorithm only works for small integer values.
I implemented a factorial function for the nCk formula, but I can't find a way to solve such task for bigger number, and in 1s.
#include <iostream>
using namespace std;
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int i, n, k;
long long res, num, den;
res = num = den = 1;
cin >> n >> k;
if (n < k) {
cout << 0;
return 0;
}
if (n == k || k == 0) {
cout << 1;
return 0;
}
for (i = 1; i <= k; i++) {
if ((n - i + 1) % i == 0) {
res = res * ((n - i + 1) / i);
}
else {
num *= (n - i + 1);
den *= i;
}
}
cout << (res*num)/den;
return 0;
}