Pagini recente » Cod sursa (job #841443) | Cod sursa (job #1145200) | Cod sursa (job #2810466) | Cod sursa (job #1009682) | Cod sursa (job #314535)
Cod sursa(job #314535)
#include<stdio.h>
using namespace std;
long long z;
long long kmax(long long n)
{long long x=n,kt;
kt=0;
while(x>=5) {x/=5;kt++;}
return kt;
}
long long calculare(long long n)
{long long ptemp=5,i,sumz=0,k;
k=kmax(n);
for(i=1;i<=k;i++)
{sumz+=(int)(n/ptemp);
ptemp*=5;
}
return sumz;
}
long long cautare(long long inc, long long sf)
{long long mij=(inc+sf)>>1,s;
mij=mij-mij%5;
s=calculare(mij);
if(s==z) return mij+1;
else if(mij<inc) return -1;
//else if(z==s) return mij;
//else if(inc>sf) return -1;
else if(z>s) return cautare(mij+1,sf);
else return cautare(inc,mij-1);
//else if (z==s) return mij;
}
int main()
{long long nr=10000000000LL,rasp;
FILE*f=fopen("fact.in","r");
FILE*g=fopen("fact.out","w");
fscanf(f,"%lld",&z);
if(z==0)fprintf(g,"1\n");
else if(z==1) fprintf(g,"5\n");
else
{rasp=cautare(1,nr);
/*if((rasp+1)%5==0)
fprintf(g,"%lld\n",rasp+1);
else if((rasp-1)%5==0)
fprintf(g,"%lld\n",rasp-1);
else if((rasp-2)%5==0)
fprintf(g,"%lld\n",rasp-2);
else if((rasp+2)%5==0)
fprintf(g,"%lld\n",rasp+2);
else*/
if (rasp!=-1) rasp=rasp-rasp%5;
fprintf(g,"%lld\n",rasp);
}
fclose(f);
fclose(g);
return 0;
}