Witam, mam problem z Zadaniem ze SPOJ, mianowicie mój program wylicza poprawnie wszystkie liczby ktore mu dalem nawet te których wynik wynosi więcej niż miliard. Sprawdzałem wiele wyników z różnych kalkulatorów Newtona i wszystko ładnie wychodzi i mimo tego SPOJ mi tego zadania nie akceptuje jest napisane że błędna odpowiedź. Macie jakieś pomysły co w tym kodzie może być nie tak?
#include<iostream>
#include<iomanip>
using namespace std;
long double silnia(long double a);
int main()
{
int t;
long wynik;
long double n,k,nk;
cin>>t;
while(t--)
{
cin>>n>>k;
if (k > n)
{
cout<<"0"<<endl;
continue;
}
nk = n - k;
wynik = silnia(n)/(silnia(k)*silnia(nk));
cout<<wynik<<endl;
}
return 0;
}
long double silnia(long double a)
{
if (a != 0)
{
for (long double i = a-1; i > 0; i--)
{
a *= i;
}
}
else a = 1;
return a;
}