Given an integer n, return the number of trailing zeroes in n!.
class Solution(object):
def trailingZeroes(self, n):
"""
:type n: int
:rtype: int
"""
return 0 if n==0 else n/5+self.trailingZeroes(n/5)
class Solution(object):
def trailingZeroes(self, n):
"""
:type n: int
:rtype: int
"""
r = 0
while n>0:
n /= 5
r += n
return r
1 我的方法时间超出限制了
2 因为末尾0都是由5*2得来的,故可以统计5和2的个数,但在质因数中,2的个数总是大于等于5的个数,所以我们只需要统计5的个数就行了,有多少个5,就返回多少个0
3 用递归的方法: 第一个n/5得到5的个数,self.trailingZeroes(n/5)可以得到
4 while的方法:比如n=28, n/5=5, 还可以while循环一次,这是因为28求阶乘中有个25,第一次n/5是把单个的5找出来了,再循环一次,可以把25中的另外一个5找出来。
5 假如是126,则126/5=25,因为126中有125=5*5*5,第一次除以5时,得到单个的5,再用25/5=5,得到125中的第二个5,再除以5得到最后一个5