lc172.阶乘后的零

 

题目链接

这个比较简单吧,零的数量本质上由5的数量决定,比如说5的因子里有一个5,10的因子里有一个5,25的因子里有两个5。有几个5就会在末尾产生几个0,因为2的数量肯定都是足够的。所以我们只需要求出因子里有5的数字有几个,25的有几个,125的有几个,以此类推,每次相应地在答案上加1,2,3…即可。这个算法的时间复杂度是O(logN),空间复杂度是O(1)。

python:

class Solution:
    def trailingZeroes(self, n: int) -> int:
        ans = 0
        five = 5
        while five <= n:
            ans += n // five
            five *= 5
        return ans

C++:

class Solution {
public:
    int trailingZeroes(int n) {
        unsigned int nCount = 0;
        while (n) {
            nCount += (n / 5);
            n /= 5;
        }
        return nCount;
    }
};