Cod sursa(job #289967)
Utilizator | Eugenie Daniel Posdarascu eudanip | Data | 27 martie 2009 11:09:38 |
---|---|---|---|
Problema | Factorial | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.44 kb |
#include<stdio.h>
long n,in,sf,m,max,k,cif;
int main ()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%ld",&n);
if(n==0)
{
printf("1");
return 0;
}
in=1;sf=5*n;
while(in<=sf)
{
m=(in+sf)/2;
k=1; cif=0;
while(1)
{
k=k*5;
cif=cif+m/k;
if(k>m)
break;
}
if(cif==n)
{
max=m;
sf=m-1;
}
else
in=m+1;
}
if(max)
printf("%ld",max);
else
printf("-1");
return 0;
}