Pagini recente » Cod sursa (job #1726767) | Cod sursa (job #2096440) | Cod sursa (job #2039195) | Cod sursa (job #1976586) | Cod sursa (job #630219)
Cod sursa(job #630219)
#include <cstdio>
using namespace std;
inline int zerosAtEndOfFact (long int x) {
int s = 0, pow5 = 5;
while (x > pow5) {
s += x / pow5;
pow5 *= 5;
}
return s;
}
int main () {
int P;
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
scanf("%d", &P);
if (P == 0) {
printf("1");
return 0;
}
int upperLimit = 1000000000, i = 1, N = 0, k, zeros;
while (i < upperLimit) {
k = i + (upperLimit - i) / 2;
zeros = zerosAtEndOfFact(k);
if (zeros == P) {
N = k;
break;
}
if (zeros < P) {
i = k + 1;
} else {
upperLimit = k - 1;
}
}
N -= N % 5;
if (N) {
printf("%d", N);
} else {
printf("-1");
}
return 0;
}