阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
思路:
- 末尾要出现0,需要有因子10;
- 因子10可以是 2 * 5,10 来的,总之大家就得出结论,2 * 5, 10都和5有关,只需要统计5个数目。
- 另外还有25,125…这样的数字,有多个因子5,等价于 n/25, n/125。
- 因此就有 5的数目为 n/5+n/25+n/125+…,5的数目就是尾部0的数目。
建议看参考链接1。
代码:
class Solution {
public:
int trailingZeroes(int n) {
int count = 0;
while (n > 1)
count += (n /= 5);
return count;
}
};
结果:
参考链接:
[1] 威行天下:[LeetCode] 172. 阶乘后的零