Pagini recente » Cod sursa (job #1601566) | Cod sursa (job #1307255) | Cod sursa (job #2383414) | Cod sursa (job #970648) | Cod sursa (job #1520060)
#include <fstream>
#include <math.h>
#include <limits.h>
using namespace std;
long long int zeros(long long int x)
{
long long int zeros = 0, k;
for(k = 0; pow(5,k) <= x; k++);
for(int i = 1; i <= k - 1; i++)
zeros += (x / pow(5,i));
return zeros;
}
long long int search(long long int p)
{
if(p == 0)
return 1;
long long int first = 1, last = LLONG_MAX;
while(first <= last)
{
long long int mid = (first + last) / 2;
if(zeros(mid) == p)
{
while(zeros(mid) == p)
mid--;
return mid + 1;
}
else
{
if(p > zeros(mid))
first = mid + 1;
else
last = mid - 1;
}
}
return -1;
}
int main()
{
ifstream in("fact.in");
long long int p;
in >> p;
in.close();
ofstream out("fact.out");
out << search(p);
out.close();
}