二項係数を計算するコードがありますが、数値が20より大きい場合、計算が間違ってしまいます。どこに問題がありますか?ありがとう
#include <iostream>
using namespace std;
long int bin(long int x)
{
if(x==0)
return 1;
long int r = x;
for(int i = r-1;i>0;i--)
{
r = r*i;
}
return r;
}
int main()
{
cout << "Write n and k: " << endl;
long int n=0;
long int k=0;
cin >> n;
cin >> k;
long int result = 0;
long int fn = bin(n);
long int fk = bin(k);
long int fnk = bin(n-k);
result = fn/(fk*fnk);
cout << endl << "C = " << result << endl;
return 0;
}
たとえば、12と5 = 792は正しいですが、20と4=-2は正しくありません