设计一个算法,算出 n 阶乘有多少个尾随零。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
class Solution {
public:
int trailingZeroes(int n) {
int zero = 0;
while (n >= 5) {
n = n / 5;
zero = zero + n;
}
return zero;
}
};
POINT:
- 只需考虑5的数量,同时考虑5,25,125,...
n(n>=5)除以5,即为n以内能被5除尽的数的个数;再除以5,即为n以内能被25除尽的数的个数;……
每次除后的值累加,即为n以内阶乘因子中5的个数!