Cod sursa(job #403227)
| Utilizator | Data | 24 februarie 2010 18:46:12 | |
|---|---|---|---|
| Problema | Factorial | Scor | 25 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
#include<cstdio>
const int N=1<<20;
long long p;
long long zero (long long n)
{
int s=0;
while (n)
{
s=s+n/5;
n=n/5;
}
return s;
}
long long fact(int p)
{
long long h,i,pas=N;
for ( i=0;pas;pas=pas/2)
{
h=zero(i+pas);
if (h<p)
i=i+pas;
}
if (zero(i+1)==p)
return (i+1);
else return -1;
}
int main()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%lld",&p);
long long k=fact(p);
printf("%lld",k);
return 0;
}
