Cod sursa(job #150625)
#include <stdio.h>
#define NMAX 20000002
long nr(long x)
{ long nr=1;
while (x%5==0)
{ nr++;x/=5;
}
return nr;
}
int main()
{ long p,x[NMAX];
FILE *f=fopen("fact.in","rt");
fscanf(f,"%ld",&p);
fclose(f);
unsigned long st,dr,mij;
long i;
x[1]=1;
for (i=2;i<NMAX-1;i++) x[i]=x[i-1]+nr(i);
st=1;
dr=NMAX-2;
while (st<=dr)
{ mij=(st+dr)/2;
if (x[mij]==p) break;
if (x[mij]>p) dr=mij-1;
else st=mij+1;
}
FILE *g=fopen("fact.out","wt");
if (p==0) fprintf(g,"0");
else if (st>dr) fprintf(g,"-1");
else fprintf(g,"%ld",mij*5);
fclose(g);
return 0;
}