Pagini recente » Monitorul de evaluare | Cod sursa (job #2984322) | Cod sursa (job #24180) | Cod sursa (job #3003422) | Cod sursa (job #150375)
Cod sursa(job #150375)
#include <stdio.h>
#define NMAX 20000001
long nr(long x)
{ long nr=0;
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[0]=0;
for (i=1;i<NMAX;i++) x[i]=x[i-1]+nr(5*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,"%ld",mij*5);
return 0;
}