Pagini recente » Cod sursa (job #1799759) | Rating Eduard Somesan (somesanedi) | Cod sursa (job #2332272) | Cod sursa (job #1185220) | Cod sursa (job #222087)
Cod sursa(job #222087)
#include <stdio.h>
FILE *fi = fopen("fact.in", "r");
FILE *fo = fopen("fact.out", "w");
unsigned long P, N, z, st, dr, ct;
unsigned long n5(unsigned long N) {
unsigned long N5 = N/5, P=5, j, R;
while (P<=N/5) {
P = P*5;
N5+=N/P;
}
return N5;
}
int main() {
fscanf(fi, "%d", &P);
st = 0; dr = 4294967295;
if (n5(0)==P) fprintf(fo, "0\n");
else
if (n5(4294967295)==P) fprintf(fo, "4294967295\n");
else
while (st<dr) {
if (dr==st+1) {
z = n5(st);
if (z==P) fprintf(fo, "%ld\n", st);
else {
z = n5(dr);
if (z==P) fprintf(fo, "%ld\n", dr);
else fprintf(fo, "-1\n");
}
break;
}
else {
ct = (st+dr)/2;
z = n5(ct);
if (z<P) st = ct; else dr = ct;
}
}
fclose(fi);
fclose(fo);
return 0;
}