Cod sursa(job #690834)
Utilizator | Data | 25 februarie 2012 22:45:42 | |
---|---|---|---|
Problema | Factorial | Scor | 55 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.45 kb |
#include<cstdio>
using namespace std;
int main()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
long x,j,ok,Pr,p,k,m,i;
scanf("%ld",&p);
if(p==0){printf("1");return 0;}
i=0;j=100000000;ok=0;
while(i<=j&&ok==0)
{
m=(i+j)/2;
Pr=5;k=0;
while(Pr<m)
{
k=k+m/Pr;
Pr*=5;
}
if(k==p){x=m-m%5;ok=1;}
else if(k<p) i=m+1;
else j=m-1;
}
if(ok) printf("%ld",x);
else printf("-1");
return 0;
}