Pagini recente » Cod sursa (job #1455904) | Cod sursa (job #1968576) | Cod sursa (job #1198852) | Cod sursa (job #2405011) | Cod sursa (job #629269)
Cod sursa(job #629269)
#include <stdio.h>
int cate_zerouri(long n){
//cate zerouri are n!
int suma=0,pn=5;
while(pn<n) {
suma+=n/pn;
pn*=5;
}
return suma;
}
int cauta_n(int p){
int li,ls,k,s,pn;
li=1;
ls=1000000000;
while(li<ls){
k=li+(ls-li)/2;
s=cate_zerouri(k);
if(s==p) return k;
if(s<p) li=k+1;
else ls=k-1;
}
return 0;
}
int main()
{
int p,k;
FILE *fin=fopen("fact.in","r");
fscanf(fin,"%d",&p);
fclose(fin);
k=cauta_n(p);
k=k-k%5;
FILE *fout=fopen("fact.out","w");
if (p == 0) fprintf(fout,"1\n");
else if(k) fprintf(fout,"%d\n",k);
else fprintf(fout,"-1\n");
fclose(fout);
return 0;
}