From : Given an integer n, return the number of trailing zeroes in n!.
只有2和5相乘才会出现0,其中整十也可以看做是2和5相乘的结果,所以,可以在n之前看看有多少个2以及多少个5就行了,又发现2的数量一定多于5的个数,于是我们只看n前面有多少个5就行了,于是n/5就得到了5的个数,还有一点要注意的就是25这种,5和5相乘的结果,所以,还要看n/5里面有多少个5,也就相当于看n里面有多少个25,还有125,625
...
public class Solution {
public int trailingZeroes(int n) {
int ans = 0;
while(n > 0) {
ans += n/5;
n /= 5;
}
return ans;
}
}
本文介绍了一种高效计算任意正整数n的阶乘(n!)尾部零的数量的方法。核心思路在于分析5的倍数及其幂次在n!中的贡献度。通过迭代除以5并累加的方式统计5因子的总数,进而得到尾部零的数量。
219

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



