文章作者:Tyan
博客:noahsnail.com ?|? CSDN ?|? 簡(jiǎn)書(shū)
1. Description
Factorial Trailing Zeroes
2. Solution
解析:Version 1簡(jiǎn)單梭依,容易理解羊瘩,但計(jì)算量大,耗時(shí)長(zhǎng)祭隔。Version 2是只處理最后一位為0或5的情況篮灼,因?yàn)槟┪菜械?都來(lái)自于這些數(shù)字忘古。Version 3更進(jìn)一步,變?yōu)榻y(tǒng)計(jì)數(shù)字中包含因子5的個(gè)數(shù)诅诱。Version 4則是統(tǒng)計(jì)數(shù)字中包含因子5髓堪,52,53娘荡,...干旁,5^n的個(gè)數(shù)。
- Version 1
class Solution:
def trailingZeroes(self, n):
result = 1
count = 0
for i in range(1, n + 1):
result *= i
s = str(result)
i = len(s) - 1
while s[i] == '0':
i -= 1
count += 1
return count
- Version 2
class Solution:
def trailingZeroes(self, n):
if n < 5:
return 0
result = 1
count = 0
exp = 16
for i in range(5, n + 1, 5):
result = result * i * exp
while result % 10 == 0:
count += 1
result //= 10
return count
- Version 3
class Solution:
def trailingZeroes(self, n):
count = 0
for i in range(5, n + 1, 5):
temp = i
while temp % 5 == 0:
count += 1
temp //= 5
return count
- Version 4
class Solution:
def trailingZeroes(self, n):
count = 0
while n:
n //= 5
count += n
return count