Pagini recente » Cod sursa (job #3165539) | Cod sursa (job #2904971) | Cod sursa (job #2782511) | Cod sursa (job #1933563) | Cod sursa (job #629261)
Cod sursa(job #629261)
#include <stdio.h>
long v[]={5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125};
int p;
int cate_zerouri(long n){
//cate zerouri are n!
int k=0,suma=0;
int x=n;
while(x!=0 && k<11) {
x=n/v[k];
suma+=x;
k++;
}
return suma;
}
int cauta_n(int li, int ls){
int x,k;
printf("caut intre %d si %d\n",li,ls);
if(li==ls){
if(cate_zerouri(li)==p)return li;
return -1;
}
k=li+(ls-li)/2;
x=cate_zerouri(k);
if(x==p){
return k;
}
if(x<p)return cauta_n(k+1,ls);
return cauta_n(li,k-1);
}
int main(){
FILE *fin=fopen("fact.in","r");
FILE *fout=fopen("fact.out","w");
int n;
fscanf(fin,"%d",&p);
int k;
long x;
int i;
int li;int ls=5*p;
if(p==0)printf("%d\n",1);
else{
/* li=1;
while(li<=ls){
//printf("caut intre %d %d\n",li,ls);
k=li+(ls-li)/2;
x=cate_zerouri(k);
//printf("%d! are %d zerouri\n",k,x);
if(x==p){
fprintf(fout,"%d\n",k-k%5);
return 0;
}
if(x<p){
li=k+1;
}else{
ls=k-1;
}
}*/
k=cauta_n(1,100000002);
fprintf(fout,"%d\n",k-k%5);
}
//fprintf(fout,"%d\n",-1);
return 0;
}