Pagini recente » Cod sursa (job #117717) | Cod sursa (job #63389) | Cod sursa (job #2902031) | Cod sursa (job #1005189) | Cod sursa (job #2624728)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int numarZero(long x)
{
int nr = 0;
int k = 5;
while(k <= x)
{
nr += x/k;
k *= 5;
}
return nr;
}
long factorial(long n)
{
if(n == 0)
return 1;
else
{
long s = 0;
long d = n * 5;
int ok = 0;
while(s <= d)
{
long m = (s + d) / 2;
if(numarZero(m) <= n)
{
ok = m;
s = m + 1;
}
else
{
d = m - 1;
}
}
if(numarZero(ok) == n)
return ok - ok % 5;
else
return -1;
}
}
int main()
{
long n;
fin >> n;
fout << factorial(n);
return 0;
}