设计一个算法,算出 n 阶乘有多少个尾随零。
示例 1:
输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零.
示例代码1:
class Solution(object):
def trailingZeroes(self, n):
"""
:type n: int
:rtype: int
"""
if n == 0:
return 0
tmp = 1
for i in range(1, n+1):
tmp *= i
i ,n = 0, 10
flag = True
while flag:
if tmp % n == 0:
i += 1
n *= 10
else:
flag = False
return i
以上代码出现超时错误!!!
示例代码2(固定数学公式,找规律):
class Solution(object):
def trailingZeroes(self, n):
"""
:type n: int
:rtype: int
"""
if n == 0:
return 0
i = 0
while n > 0:
n //= 5
i += n
return i