Pagini recente » Cod sursa (job #1167659) | Borderou de evaluare (job #137460) | Cod sursa (job #150632)
Cod sursa(job #150632)
#include <stdio.h>
#define NMAX 0xffffffffffffffff
#define p2 27
#define NR 1000000
long nr(long x)
{ long nr=1;
while (x%5==0)
{ nr++;x/=5;
}
return nr;
}
int main()
{ long p,x[NR];
FILE *f=fopen("fact.in","rt");
fscanf(f,"%ld",&p);
fclose(f);
unsigned long 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-1;
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,"%lld",mij*5);
fclose(g);
return 0;
}