Witam
Mam do napisania następujący program :
Zadanie jest następujące: należy policzyć n!! = [n (n - 2) (n - 4) ...] mod 225 - iloczyn wszystkich liczb tej samej parzystości co n (0 < n < 10000), brany modulo 2^25.
W pierwszej linii liczba k. W następnych k liniach pojedyncze liczby n.
Mój problem polega na tym, że program działa dla wszystkich liczb nieparzystych natomiast na liczb parzystych od pewnego momentu daje wynik 0. Dla np. 4 , 8 , 12 wynik jest poprawny ale już dla 70, 102 nie.
Mój kod:
#include <iostream>
using namespace std;
#include <math.h>
unsigned long long int silnia(int n ){
// if (n<0) return 0;
if (n <= 2) return 1;
return silnia(n-2)*n;
}
int main(void){
int n,ile;
int k= pow( 2 , 25 );
cin>>ile;
for (int j=0; j<ile;j++){
cout << "Podaj n: ";
cin >> n;
cout << "wynik: " << (silnia(n))%k <<"\n";
cout << "wynik: " << (silnia(n))<<"\n";
}
return 0;
}
Czy widzi ktoś gdzieś błąd?