Cod sursa(job #509262)
| Utilizator | Data | 10 decembrie 2010 19:18:13 | |
|---|---|---|---|
| Problema | Factorial | Scor | 95 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.51 kb |
#include<cstdio>
void read(),solve();
long long mij,nr,st,dr,P,aux;
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%lld",&P);
}
void solve()
{
if(P==0){printf("1\n");return;}
if(P==1){printf("0\n");return;}
for(st=1,dr=500000000;dr-st-1;)
{
mij=(st+dr)/2;
nr=0;
for(aux=5;aux<=mij;aux*=5)nr+=mij/aux;
if(nr==P){mij-=mij%5;printf("%d\n",mij);return;}
if(nr<P)st=mij; else dr=mij;
}
printf("-1\n");
}