Pagini recente » Borderou de evaluare (job #2918395) | Cod sursa (job #1941908) | Cod sursa (job #322309) | Cod sursa (job #139791)
Cod sursa(job #139791)
#include<fstream>
#include<iostream>
#include<math.h>
using namespace std;
long fact(unsigned long a)
{
long s = 0;
long n = log(a)/log(5);
for(long k=1;k<=n;k++)s += n/pow(5, k);
return s;
}
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;}