Pagini recente » Cod sursa (job #431524) | Cod sursa (job #2492625) | Cod sursa (job #889197) | Cod sursa (job #1534562) | Cod sursa (job #630215)
Cod sursa(job #630215)
#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 () {
unsigned int P, N = 0;
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
scanf("%d", &P);
if (P == 0) {
printf("1");
return 0;
}
int upperLimit = 100000000, i = 1;
unsigned int k, zeros;
while (i <= upperLimit) {
k = (i + upperLimit) / 2;
zeros = zerosAtEndOfFact(k);
if (zeros == P) {
N = k;
break;
} else if (zeros < P) {
i = k + 1;
} else {
upperLimit = k - 1;
}
}
N -= N % 5;
if (N) {
printf("%d", N);
} else {
printf("-1");
}
return 0;
}