Cod sursa(job #117629)
| Utilizator | Data | 21 decembrie 2007 20:22:25 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.52 kb |
#include<stdio.h>
inline long nrz (long n)
{
int p=0;
while(n)
{
p+=n/5;
n/=5;
}
return p;
}
int main()
{
FILE *in=fopen("fact.in","r"), *out=fopen("fact.out","w");
long s=0,f=500000000,p,c,m;
fscanf(in,"%ld",&p);
fclose(in);
if(p==0)
{
fprintf(out,"1");
return 0;
}
while(s<f)
{
m=(s+f)>>1;
c=nrz(m);
if(c==p)
{
fprintf(out,"%ld",m/5*5);
fclose(out);
return 0;
}
else
if(c>p)
f=m;
else
s=m+1;
}
fprintf(out,"-1\n");
return 0;
}
