//172. 阶乘后的零
/*
问题转换:
原问题:n!中尾数零的个数
可化为:n!中10的个数
可化为:n!分解质因数之后,2和5个数的最小值
因为两个数就会有一个2,五个数才有一个5,所以5的个数一定比2的个数小
所以可化为:n!分解质因数之后,5的个数
n!有多少个质因数5,
即n可以划分成多少组5个数字一组,
加上划分成多少组25个数字一组,
加上划分多少组成125个数字一组,
等等。
即Ans = n / 5 + n / (5 ^ 2) + n/ (5 ^ 3) + ...
以上推理借鉴了一个博客,但是没有链接
*/
class Solution {
public:
int trailingZeroes(int n) {
int ans = 0;
while (n) {
ans += n / 5;
n /= 5;
}
return ans;
}
};
LeetCode172. 阶乘后的零
最新推荐文章于 2024-06-13 10:00:00 发布