Pagini recente » Cod sursa (job #2837927) | Cod sursa (job #234722) | Cod sursa (job #2717369) | Cod sursa (job #1905600) | Cod sursa (job #439377)
Cod sursa(job #439377)
#include <stdio.h>
const long long fin = 2000000000;
int nr5(long);
long long bsearch(int,long long,long long);
int main()
{
int p;
long long n;
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%lld",&p);
n= bsearch(p,1,fin);
while (n%5 && n!=-1) n--;
printf("%lld\n",n);
return 0;
}
int nr5(long long a)
{
int x=5;
int c=0;
while (x<=a)
{
c+= a/x;
x*=5;
}
return c;
}
long long bsearch(int x,long long ls,long long ld)
{
if (ls>=ld) return (long long)-1;
long long m=(ls+ld)/2;
int ax= nr5( m );
if (ax==x)
return m;
if (ax>x)
return bsearch(x,ls,m-1);
else
return bsearch(x,m+1,ld);
}