Cod sursa(job #897863)
| Utilizator | Data | 27 februarie 2013 22:45:46 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.61 kb |
#include <cstdio>
long long st=1,dr=2000000000,p;
long long putere(long long a);
int main ()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%lld",&p);
if(p==0)
{
printf("1");
return 0;
}
while (st<dr)
{
long long mij=(st+dr)/2;
long long n=putere(mij);
if(p<=n) dr=mij;
else st=mij+1;
}
if(putere(st)==p) printf("%lld",st);
else printf("-1");
return 0;
}
long long putere(long long a)
{
long long c=0;
for (long long i=5;i<=a;i*=5)
c+=a/i;
return c;
}
