Cod sursa(job #354728)
| Utilizator | Data | 9 octombrie 2009 12:03:37 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.45 kb |
#include <cstdio>
int zero(int n) // calculeaza nrul de zerouri din desc lui n!
{
int r=0;
while (n)
{
r=r+n/5;
n=n/5;
}
return r;
}
int caut(int p)
{
int i,pas=(1<<30);
for (i=0;pas;pas>>=1)
if (zero(i+pas)<=p-1)
i+=pas;
if (zero(i+1)!=p)
return -1;
return i+1;
}
int main()
{
int n;
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%d",&n);
printf("%d",caut(n));
return 0;
}
