看起来像是一个简单的题目,本来觉得遍历一遍n,把里面的带有5的倍数的统计一下就行了,但是题目要求是O(logN),这样的方法显然是不行的,想了想应该是只能用因子分解的方式:
1. 首先要构成位数为0的话,那么必须乘以10, 10的话就分解为2*5
2. 在一个fanw范围内的偶数数量一定大于或等于5倍数的数
那么,这时候只要统计这个阶乘中5的个数,Emmm...,怎么统计呢,比如5、10、15的话只带有一个5,而25带有2个5
class Solution:
def trailingZeroes(self, n):
"""
:type n: int
:rtype: int
"""
resu = 0
while n>0:
n = n // 5
resu += n
return resu
在python 取商要用双斜杠,不然的话会变成浮点数的。