美文网首页
阶乘后的零

阶乘后的零

作者: 你今天作业做了吗 | 来源:发表于2019-04-21 11:16 被阅读0次

    阶乘后的零

    Leetcode 172. 阶乘后的零

    题意

    给定一个整数n, 返回n!结果尾数中零的数量。

    示例一

    输入: 3
    输出: 0
    解释: 3! = 6, 尾数中没有零。
    

    示例二

    输入: 5
    输出: 1
    解释: 5! = 120, 尾数中有 1 个零.
    

    说明

    你算法的时间复杂度应为O(log n)。

    分析:

    1. 通过对阶乘组成的数进行质数分解,可得阶乘出现尾数为零的结果,只能由5*2所构成,而2的个数远多于5的个数,因此只需计算质数分解后5出现的个数即可。
    2. 假设n=25,那么由质数分解后,出现5的数总共有5, 10, 15, 20, 25,尾数出现零的个数为6个;
    3. 其中25为5^2,因此,n=25的可以简单记为n分别除以5^1,5^2,5^3,...,5^k,结果的和。

    综上,代码为:

    class Solution {
    public:
        int trailingZeroes(int n) {
            // 判断n是否为零,若为零则返回零,否则返回质数分解中5出现的个数。
            return n == 0 ? 0 : n/5 + trailingZeroes(n/5);
        }
    };
    

    相关文章

      网友评论

          本文标题:阶乘后的零

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