Pagini recente » Cod sursa (job #1921724) | Cod sursa (job #2354368) | Cod sursa (job #2672471) | Cod sursa (job #2544739) | Cod sursa (job #866717)
Cod sursa(job #866717)
#include <stdio.h>
struct relatie {
long p,n;
} rel[10];
int main() {
FILE *fi, *fo;
long p;
fi = fopen("fact.in", "r");
fscanf(fi, "%ld", &p);
fclose(fi);
fo = fopen("fact.out", "w");
if (p == 0) {
fprintf(fo,"1");
} else {
long n = 0, c, r;
int i = 0;
int found = 1;
rel[i].p = 1;
rel[i].n = 5;
while ((p/rel[i].p) >= 5) {
i++;
rel[i].p = rel[i-1].p + rel[i-1].n;
rel[i].n = rel[i-1].n * 5;
}
for (;i >= 0 && found; i--) {
c = p / rel[i].p;
r = p % rel[i].p;
if (c == 5 || r == 5) {
found = 0;
n = -1;
} else {
n += c * rel[i].n;
p = r;
}
if (r == 0)
i = -1;
}
fprintf(fo, "%ld", n);
}
fclose(fo);
return 0;
}