
思路:
末尾为0 ,说明是5的倍数,同时你不会真的去计算结果再得到0的数目,这样不可取。 所以想到从阶乘的数字下手, 比如 5!=120 有一位; 10! = 3628800 有2位0 ; 多计算几个发现规律 n/5 ; 对于数据小的时候满足 ,但大于 25时不满足,继续发现规律。 最后 得到下面的规律:
long k= n/5;
long x= k;
while(k>5){
x+=k/5;
k=k/5;
}
这里计算后满足要求,后续再用位操作看怎么实现,猜测会比这个操作要快。
本文探讨了计算阶乘结果中尾数0的数量的方法,通过观察和分析,提出了一种有效的计算公式,该公式利用循环除以5的次数来确定尾数0的数量。
168万+

被折叠的 条评论
为什么被折叠?



