Cześć, robiąc zadanie na SPOJu o silniach postanowiłem najpierw napisać program, który w ogóle te silnie będzie liczył. Napisałem takie coś:
#include <iostream>
using namespace std;
unsigned long long silnia(unsigned int n)
{
switch(n)
{
case 0: return 1; break;
default:
for(int i=n-1; i>=1; i--)
{
n*=i;
}
}
return n;
}
int main()
{
unsigned int x;
cin >> x;
cout << silnia(x);
return 0;
}
Mimo, że funkcja silnia zwraca unsigned long long, czyli chyba do 20! powinno być ok, to 12! jest ostatnim dobrze wykonanym działaniem. Co jest tu nie tak?