力扣练习之阶乘后的零

我爱海鲸 2023-05-15 22:11:26 力扣、中级算法

简介中级算法、数学

原题出处: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 的个数。

你好:我的2025