Cod sursa(job #302632)
Utilizator | Eugenie Daniel Posdarascu eudanip | Data | 9 aprilie 2009 09:20:22 |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.47 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
if(cif<n)
in=m+1;
else
sf=m-1;
}
if(max)
printf("%ld",max);
else
printf("-1");
return 0;
}