Pagini recente » Cod sursa (job #802548) | Cod sursa (job #3122001) | Cod sursa (job #1485043) | Cod sursa (job #1372512) | Cod sursa (job #2206474)
#include <cmath>
#include <cstdio>
#include <cstdint>
uint64_t getZeros(uint32_t n) {
//unsigned limit = log(n) / log(5);
//uint64_t z = n * (0.2 * (1 - pow(0.2, limit)) / 0.8);
uint64_t z = 0;
for(uint32_t i = 5; i <= n; i*=5) {
z += n / i;
}
//printf("Zeroes(%u!) = %lu\n", n, z);
return z;
}
int main() {
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
unsigned p;
scanf("%u", &p);
if(p == 0) {
printf("1\n");
return 0;
}
uint32_t start = 5;
uint32_t end = 100000000;
uint32_t middle;
uint64_t zeros;
while(start < end) {
middle = (start + end) / 2;
zeros = getZeros(middle);
if(zeros == p) break;
if(zeros > p) end = middle;
else start = middle;
}
if(zeros == p) printf("%lu\n", middle / 5LU * 5LU);
else printf("-1\n");
return 0;
}