Cod sursa(job #306232)

Utilizator Razzoragamita dandanache Razzor Data 20 aprilie 2009 02:55:22
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream.h>
#include <math.h>
inline long long  tlog5(long double d)
{
return long(floor(log10(d)/log10(5)));
}

long long nzero(long long n)
{
long long i,z,k;
z=0;
k=tlog5(n);

for (i=1;i<=k;i++)
{
z=(n/pow(5,i))+z;
}

return z;
}

long long bin(long long li,long long ls,long long p)
{
long long mij,nz;

while ((li<=ls) && (p!=mij)){
mij=(li+ls)/2;
nz=nzero(mij);
if  (nz==p) {return mij;}
else if (nz<p) {li=mij+1;}
else  {ls=mij-1;}
}
return -1;
}




int main()
{
long long p,a,b;
ifstream f("fact.in");
f>>p;
f.close();
a=bin(0,1220703125,p);
ofstream g("fact.out");
while (nzero(a-1)==p)
{a--;}

if (nzero(a)!=p) {g<<"-1";}
g<<a;
g.close();
return 0;
}