Factorial Zeros:计算n!尾数有多少个0。
根据质因数分解,只有2 * 5能得到10,所以应该统计[1, n]中存在多少个5,这可以通过将每个数字循环除5获得,但是这样就超时了,更好的办法是依次算出有多少个数中至少有1个5、至少2个5、至少3个5等等。
m = n / 5表示m个5相加可以得到最大的不大于n的数,也就是有m个整数至少含有一个5。
class Solution {
public:
int trailingZeroes(int n) {
int count = 0;
while(n != 0){
count += n / 5;
n /= 5;
}
return count;
}
};

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



