Pagini recente » Cod sursa (job #790894) | Cod sursa (job #2433169) | Cod sursa (job #340791) | Cod sursa (job #436792) | Cod sursa (job #813181)
Cod sursa(job #813181)
#include <cstdio>
unsigned long long computeNumZeroDigits(unsigned long long n) {
unsigned long long digits = 0;
for (unsigned long long i = 5; i <= n; i *= 5) {
digits += n / i;
}
return digits;
}
int main() {
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
unsigned long long p;
scanf("%llu", &p);
if (p == 0) {
printf("1");
return 0;
}
unsigned long long left = 0;
unsigned long long right = 100000000;
unsigned long long n;
unsigned long long last_found = -1;
do {
n = (left + right) / 2;
unsigned long long num_zero_digits = computeNumZeroDigits(n);
if (num_zero_digits < p) {
left = n + 1;
}
else if (num_zero_digits > p) {
right = n - 1;
}
else {
last_found = n;
right = n - 1;
}
if (left > right) {
break;
}
} while (true);
printf("%llu", last_found);
fclose(stdin);
fclose(stdout);
return 0;
}