原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-medium/xwehi5/
解法一:
class Solution:
def trailingZeroes(self, n: int) -> int:
count = 0
while n >= 5:
count += n//5
n //= 5
return count
思路:
计算一个数中有多少个素因子 5 等同于计算这个数末尾有多少个 0。如果一个数中因子 5 的数量为 k,那么这个数末尾就会有 k 个 0。
由于 n! 可以分解为素因子乘积,每个 5 都对应着一个 2,因此我们只需要统计 n! 中因子 5 和因子 2 的个数,然后取两者之间的较小值,就是 n! 末尾的 0 的个数。