Pagini recente » tema | Cod sursa (job #912267) | tema | Istoria paginii runda/vot/voteaza_miruna/clasament | Cod sursa (job #2640325)
#include <stdio.h>
int main() {
int p, pow, x, aux1, aux2, pow_aux1, pow_aux2;
FILE *in = fopen("fact.in", "rt");
FILE *out = fopen("fact.out", "wt");
fscanf(in, "%d", &p);
pow = 25;
if (p == 0) {
x = 1;
} else {
x = 5 * p;
while (x >= pow) {
pow = pow * 5;
}
pow = pow / 5;
aux1 = p;
aux2 = p;
pow_aux1 = pow;
pow_aux2 = pow;
while ((x / pow) >= 1) {
p = p - x/pow;
if (p >= 0 ) {
x = p * 5;
pow = pow/5;
if (pow == 5) {
break;
}
}
}
while ((x / pow_aux1) >= 1) {
aux1 = aux1 - x/pow_aux1;
if (aux1 >= 0 ) {
pow_aux1 = pow_aux1/5;
if (pow_aux1 == 5) {
break;
}
}
}
x = aux1 * 5;
while (pow_aux2 > 1) {
aux2 = aux2 - x/pow_aux2;
pow_aux2 = pow_aux2/5;
}
if (aux2 < 0) {
x = -1;
}
}
fprintf(out, "%d\n", x);
fclose(in);
fclose(out);
return 0;
}