Pagini recente » Istoria paginii runda/oji/clasament | Cod sursa (job #1811638) | Cod sursa (job #600485) | Cod sursa (job #1203304) | Cod sursa (job #139785)
Cod sursa(job #139785)
#include<fstream>
#include<iostream>
using namespace std;
long fact(unsigned long a)
{
long nr = 0;
long rVal = 0;
unsigned long i = 5;
while(nr=a/i)
{
if(nr==1)return rVal;
rVal += nr;
i*=5;
}
return rVal;
}
int main()
{
ifstream f1("fact.in");
ofstream f2("fact.out");
register unsigned long n, s, d, m, nr;
f1>>n;
if(n==0){f2<<1;f2.close();return 0;}
s = 0;
d = 2000000000;
while(s<d)
{
m = (s+d)/2;
nr = fact(m);
if(n>nr)s=m+1;
else if(n<nr)d=m-1;
else if(nr==n)break;
}
if(m!=nr)m=-1;
f2<<m;
cout<<m;
f1.close();
f2.close();
return 0;}