Pagini recente » Cod sursa (job #2673563) | Cod sursa (job #1129355) | Cod sursa (job #912366) | Cod sursa (job #1622205) | Cod sursa (job #630216)
Cod sursa(job #630216)
#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;
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, N = 0;
unsigned int 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;
}