Cod sursa(job #2336433)
| Utilizator | Data | 5 februarie 2019 09:29:13 | |
|---|---|---|---|
| Problema | Factorial | Scor | 25 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <fstream>
#include <cmath>
using namespace std;
long long cat0(long long n)
{ long long c=0,p5=5;
while(n>=p5)
{
c+=n/p5;
p5*=5;
}
return c;
}
long long cbin(long long p)
{
int msk,pos=0;
for(msk=1<<20;msk>0;msk/=2)
{
if(cat0(msk+pos)<=p)
pos+=msk;
}
if(cat0(pos)==p){ while(cat0(pos)==p)pos--;
return pos+1;
}
else
return -1;
}
ifstream cin("fact.in");
ofstream cout("fact.out");
int main()
{
long long sg,c5,p,i,c=0;
cin>>p;
if(p==0){
cout<<1;
return 0;}
else
cout<<cbin(p);
return 0;
}
