Pagini recente » Cod sursa (job #1543492) | Cod sursa (job #2120767) | Cod sursa (job #2123253) | Cod sursa (job #1269482) | Cod sursa (job #2336415)
#include <fstream>
#include <cmath>
using namespace std;
unsigned long long log5(unsigned long long n)
{
long long l=0;
while(n%5==0)
{
n/=5;
l++;
}
return l;
}
long long powe(long long x,long long y)
{
int i=0,p=1;
for(i=1;i<=y;++i)
{
p*=x;
}
return p;
}
long long cat5(long long n)
{
int c=0;
while(n%5==0 && n>=5)
{
c++;
n/=5;
}
return c;
}
long long cat0(long long n)
{ int c=0;
for(int i=5;i<=n;i+=5)
{
c+=cat5(i);
}
return c;
}
long long cbin(long long p)
{
int v,msk,pos=0;
for(msk=1<<20;msk>0;msk/=2)
{
if(cat0(msk+pos)<=p)
pos+=msk;
} v=cat0(pos);
if(v==p)
{
return pos-pos%5;
}
else
return -1;
}
ifstream cin("fact.in");
ofstream cout("fact.out");
int main()
{
unsigned long long sg,c5,p,i,c=0;
cin>>p;
if(p==0){
cout<<1;
return 0;}
else
cout<<cbin(p);
return 0;
}