#label: maths difficulty: easy

"""
思路：

阶乘的结果中的0，只可能有两种来源：

1. 2 * 5 得到的0

2. 从类似10这种末尾自带0的数继承来的0

对于第一种来源，0的个数取决于min（2， 5），比如如果有3个2和2个5，那么只能得到2个0；又因为5比2大，所以如果有5，一定有2，因此0的个数仅取决于5的个数。

而对于第二种来源， 10 = 2 * 5，结尾有一个0， 100 = 2 * 5 *5，结尾有两个0，观察一下可以发现，实际上末尾的0也取决于因数分解里5的个数，因此0的个数仅取决于5的个数。

因此，统计n的因数里5的个数就可以知道n！的末尾有几个0。
"""

class Solution:
    def trailingZeroes(self, n: int) -> int:
        res = 0
        while n > 4:
            res += n // 5
            n //= 5
        return res
