Cod sursa(job #1619578)
Utilizator | Data | 28 februarie 2016 17:29:52 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.46 kb |
#include <fstream>
using namespace std;
int main()
{
ifstream fin("fact.in");
ofstream fout("fact.out");
long long n=0,aux,aux2,p,p2,nr2,nr5,s=0,P,st,dr,mij,mij1,ok;
fin>>P;
if(P==0)
fout<<1;
else
{
st=1;
dr=1000000000000;
ok=0;
while((ok==0)&&(st<=dr))
{
mij=(st+dr)/2;
aux2=mij;
nr5=0;
p2=5;
while(aux2>0)
{
aux2=aux2/5;
nr5=nr5+aux2;
}
s=nr5;
if(s==P)
ok=1;
else
{
if(s<P)
{
st=mij+1;
}
else
{
dr=mij-1;
}
}
}
if(ok==0)
fout<<-1;
else
{
mij1=mij;
while((mij1>1)&&(s==P))
{
mij1--;
aux2=mij1;
nr5=0;
p2=5;
while(aux2>0)
{
aux2=aux2/5;
nr5=nr5+aux2;
}
s=nr5;
}
if(s==P)
fout<<mij1;
else
{
fout<<mij1+1;
}
}
}
fin.close ();
fout.close ();
return 0;
}