规律: 这 9 个数字中只有 2(它的倍数) 与 5 (它的倍数)相乘才有 0 出现。所以,现在问题就变成了这个阶乘数中能配 多少对 2 与 5。
可以发现,一个数字进行拆分后 2 的个数肯定是大于 5 的个数的,所以能匹配多少对取决于 5 的个数。那么问题又变成了 统计阶乘数里有多少个 5 这个因子。
需要注意的是,像 25,125 这样的不只含有一个 5 的数字的情况需要考虑进去。所以除了计算 n/5,还要计算 n/5/5 , n/5/5/5 , n/5/5/5/5 , …, n/5/5/5,/5直到商为0,然后求和即可。
def solution(n):
if n==0:
return 0;
else:
return n//5+solution(n//5)
print(solution(5))