Pagini recente » Monitorul de evaluare | Cod sursa (job #2429918)
#include <iostream>
#include <cmath>
uint64_t factorial(int N, int * k){
if(N > 1){
if(N % 5 == 0){
*k = *k + 1;
}
if(N % 25 == 0){
*k = *k + 1;
}
return N * factorial(N - 1, k);
} else {
return 1;
}
}
int main() {
int P, k = 0, c = 1;
FILE * fisier_out = fopen("fact.out", "w");
FILE * fisier_in = fopen("fact.in", "r");
fscanf(fisier_in, "%d", &P);
if((P+1) % 6 == 0){
fprintf(fisier_out, "%d", -1);
return 0;
}
while(1){
k = 0;
factorial(c, &k);
if(k == P){
fprintf(fisier_out, "%d", c);
break;
}
c = c + 1;
}
fclose(fisier_in);
fclose(fisier_out);
return 0;
}