Pagini recente » Cod sursa (job #1638993) | Cod sursa (job #3030994) | Cod sursa (job #1517038) | Cod sursa (job #1251641) | Cod sursa (job #2986816)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
inline unsigned long long count_zeros(unsigned long long n)
{
unsigned long long fives = 0, current = 5;
while(n >= current) {
fives += n / current;
current *= 5;
}
return fives;
}
int main(void)
{
unsigned long long n, z, result = -1, left = 1, right = 1e18, mid;
bool found = false;
fin >> n;
if(n == 0)
fout << 1 << endl;
else {
while(left <= right) {
mid = (left + right) / 2;
z = count_zeros(mid);
if(z == n)
result = mid, right = mid - 1, found = true;
else if(z > n)
right = mid - 1;
else
left = mid + 1;
}
if(found)
fout << result - result % 5;
else
fout << -1;
}
return 0;
}