题目链接
阶乘末尾0只与 2,5 的数量有关。直接二分mid,check的时候按照2^i , 5^i 做除法累加得到mid阶乘中2 ,5的数量,取min就是0的个数。
ll k;
bool check(ll x)
{
ll ans=0;
for(int i=2; i<=x; i=i*2)
{
ans+=x/i;
}
ll cnt=0;
for(int i=5; i<=x; i=i*5)
{
cnt=cnt+x/i;
}
return min(cnt,ans)>=k;
}
signed main()
{
read(k);
ll l=1,r=1e14;
ll fk;
while(l<r)
{
ll mid=(l+r)/2;
if(check(mid))
{
r=mid;
fk=mid;
}
else
{
l=mid+1;
}
}
printf("%lld",fk);
}