)Cześć
Zajmuję się zadaniem dwumiany ze spoja. link: https://pl.spoj.com/problems/BINOMS/
Przejrzałem już 10 tematów, próbowałem zmieniać typy zmiennych, sposoby liczenia silnii, nawet porobiłem ify do sytuacji wyjątkowych typu (0,0) (123,123), (12,0) itd. Dodatkowo sprawdzałem wyniki na wolframie i wszystko się zgadzało. Sędzia zwraca błędną odpowiedź, proszę o pomoc
#include <iostream>
#include <iomanip>
using namespace std;
long double factorial(long double &f)
{
for(int i = f-1; i >= 1; i --)
{
f*=i;
}
return f;
}
int main()
{
long double n;
long double k;
long double nk;
int t;
cin >> t;
for(int i = 0; i < t; i ++)
{
cin >> n >> k;
nk = n-k;
cout << setprecision(10);
if((n==0)&&(k==0)) cout << 1 << endl;
else if((n!=0)&&(k==0)) cout << n << endl;
else if(n==k) cout << 1 << endl;
else cout << factorial(n)/(factorial(k)*factorial(nk)) << endl;
}
return 0;
}