写在前面
- 数学题
-
n的阶乘的尾部为0的个数主要取决于其中5的个数。
-
阶乘尾数为0,要得到0的尾数,就需要偶数与5相乘,由于偶数个数远远多于5的个数,所以有几个5,尾数就有几个0
-
同时,10可以看做2*5(1个5),25看做5*5(2个5)
题目详情
阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n)
ac题目
class Solution {
public:
int trailingZeroes(int n) {
int sum = 0;
while(n) {
sum += n/5;
n /= 5;
}
return sum;
}
};
- 参考文章
- 力扣172. 阶乘后的零(取余???位运算出发???)