美文网首页Leetcode
Leetcode.172.Factorial Trailing

Leetcode.172.Factorial Trailing

作者: Jimmy木 | 来源:发表于2019-11-13 09:26 被阅读0次

    题目

    求出n的阶乘末尾有多少个0.

    Input: 3
    Output: 0
    
    Input: 30
    Output: 7
    

    思路

    如果强行求解n的阶乘, 时间复杂度太高.
    求解多少个0, 就需要对10进行因式分解, 分解为质数.
    n的阶乘里面2肯定比5多, 只要有5就移动能构成10.

    因此主要需要求5的个数.
    如果一个数除以5的余数就有多少个5, 除以25的余数就有多少个25...

    int trailingZeroes(int n) {
        int res = 0;
        long num = 5;
        vector<int> dp;
        while (num <= n) {
            int left = n / num;
            num *= 5;
            res += left;
        }
    
        return res;
    }
    

    总结

    转换思维, 转换问题求解对象.

    相关文章

      网友评论

        本文标题:Leetcode.172.Factorial Trailing

        本文链接:https://www.haomeiwen.com/subject/gvzcictx.html