172. 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
解题思路:计算n!结果尾数中零的数量,就是统计1~n中2和5因子对的对数。由题意可知,因子2的个数要远大于因子5,因此只需要统计因子5的个数即可。
例如1~15中,因子5的个数为15//5 == 3个,即为5,10,15中包含的3个5;1~25中,因子5的个数为25//5 == 5个,再加上25 //25 == 1个,即为6个,即为5,10,15,20中包含的4个加上25中包含的2个。
Python3代码如下:
class Solution(object):
def trailingZeroes(self, n):
"""
:type n: int
:rtype: int
"""
result = 0
i = 5
while n >= i:
result += n//i
i *= 5
return result