Cod sursa(job #53093)
Utilizator | Data | 20 aprilie 2007 22:20:36 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.52 kb |
#include<stdio.h>
long nrz(long c )
{
long t=0;
while(c)
{
t+=c/5;
c/=5;
}
return t;
}
int main()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
long p;
scanf("%ld",&p);
if(p==0) printf("1");
else
{
long li,lf,m;
li=(p+1)/2;
lf=p;
while(li<=lf)
{
m=(li+lf)/2;
if(nrz(5*m)==p) break;
if(nrz(5*m)>p) lf=m-1;
else li=m+1;
}
if(li<=lf) printf("%ld",5*m);
else printf("-1\n");
}
return 0;
}