Pagini recente » Cod sursa (job #2074984) | Arhiva de probleme | Cod sursa (job #675845)
Cod sursa(job #675845)
#include <cstdio>
#include <climits>
using namespace std;
long p,n,i,x,d,st,dr,c;
long zero(long x)
{long d=5,s;
s=0;
while (x/d>0)
{s=s+x/d;
d*=5;}
return s;
}
int main()
{FILE *f1 = fopen("fact.in","r");
FILE *f2 = fopen("fact.out","w");
fscanf(f1,"%ld",&p);
st=1;dr=p*5+1;
while (st<=dr)
{c=(st+dr)/2;
if (p<zero(c)) dr=c-1;
else if (p>zero(c)) st=c+1;
else {n=c;break;}
if (zero(dr)<p || zero(st)>p) {fprintf(f2,"-1");return 0;}
}
while (zero(n)==p) n--;
if (p==0) fprintf(f2,"1");
else fprintf(f2,"%ld",n+1);
fclose(f1);fclose(f2);
return 0;
}