Pagini recente » Cod sursa (job #410916) | Cod sursa (job #1719682) | Cod sursa (job #1080210) | Cod sursa (job #174325) | Cod sursa (job #73303)
Cod sursa(job #73303)
#include<stdio.h>
FILE *f=fopen("fact.in","r"),
*g=fopen("fact.out","w");
long long p,n,i,v,m,ok,fl,fr,fm;
long long zero(long long n)
{ long long q=5,k=0;
while(q<n) { k+=n/q;
q*=5;
}
return k;
}
int caut(long long k)
{ while(k%5) k--;
return k;
}
int main()
{ fscanf(f,"%lld",&p);
n=2000000000;
long long left=1,right=n;
ok=1;
while(left<right&&ok==1){fm=m;
m=(left+right)>>1;v=zero(m);
if(v==p&&fm!=m) {if(zero(m)==p) n=caut(m),ok=0;
}
else if(v>p) right=m;
else left=m;
if(fl==left&&fr==right&&ok) ok=2;
fl=left;
fr=right;
if(fm>m) { if(zero(fm)<p) ok=2;
}
else if(zero(fm)>p) ok=2;
if(right-left==1) ok=2;
if(left>=right) break,ok=2;
}
if(p==0) fprintf(g,"1\n");
else if(!ok)fprintf(g,"%lld\n",n);
else fprintf(g,"-1\n");
fclose(f);
fclose(g);
return 0;
}