给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
class Solution(object):
def trailingZeroes(self, n):
"""
:type n: int
:rtype: int
"""
sum=0
while n>0:
sum+=n//5
n=n/5
return int(sum)
f=Solution()
print(f.trailingZeroes(10))
1.阶乘后的零意思是求连续的0,比如说7!=5040,因为0不连续,所以还算是1个0
2.我自己原来的思路是先用for循环求出值,然后在str(result),求出里面0的个数,后发现太蠢,会超时
3.看了大神们的分子,如果末尾出现0,肯定是有因子2和5相乘了,2因子只要是偶数都带,因此只要找有5因子的数的个数
4.然后又想for循环遍历所有能被5整除的数,又很蠢,超时
5.直接将n除以5,就行
6. // :表示整数除法