Pagini recente » Cod sursa (job #2949418) | Cod sursa (job #2703370) | Profil free2infiltrate | Cod sursa (job #1870990) | Cod sursa (job #1430112)
#include <stdio.h>
int n0;
inline int countFive(int x) {
int div = 5;
int ans = 0;
while (x >= div && ans <= n0) {
ans = ans + (x / div);
div = div + (div << 2);
}
return ans;
}
int main(void) {
FILE *f = fopen("fact.in", "r");
int lo, hi;
int last;
fscanf(f, "%d", &n0);
fclose(f);
if (n0) {
lo = 0;
hi = n0 + (n0 << 2) + 1;
last = -1;
while (hi - lo > 1) {
int mid = lo + ((hi - lo) >> 1);
int cnt = countFive(mid);
if (cnt < n0) {
lo = mid;
} else {
if (cnt == n0) {
last = mid;
}
hi = mid;
}
}
f = fopen("fact.out", "w");
fprintf(f, "%d\n", last);
} else {
f = fopen("fact.out", "w");
fputs("1\n", f);
}
fclose(f);
return 0;
}