172 Factorial Trailing Zeroes 阶乘后的零

Posted lina2014

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了172 Factorial Trailing Zeroes 阶乘后的零相关的知识,希望对你有一定的参考价值。

给定一个整数 n,返回 n! 结果尾数中零的数量。
注意: 你的解决方案应为对数时间复杂度。

详见:https://leetcode.com/problems/factorial-trailing-zeroes/description/

Java实现:

N的阶乘可以分解为: 2的X次方,3的Y次方,4的K次方,5次Z方,.....的乘积。由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10,于是M = MIN(X,Z),不难看出X大于Z,因为被2整除的频率比被5整除的频率高的多。所以可以把公式简化为M=Z。

方法一:

class Solution {
    public int trailingZeroes(int n) {
        int res=0;
        while(n!=0){
            n/=5;
            res+=n;
        }
        return res;
    }
}

方法二:超时

class Solution {
    public int trailingZeroes(int n) {
        int res=0;
        for(int i=5;i<=n;++i){
            int m=i;
            while(m%5==0){
                ++res;
                m/=5;
            }
        }
        return res;
    }
}

参考:https://www.cnblogs.com/grandyang/p/4219878.html

以上是关于172 Factorial Trailing Zeroes 阶乘后的零的主要内容,如果未能解决你的问题,请参考以下文章

172. Factorial Trailing Zeroes

172. Factorial Trailing Zeroes

172. Factorial Trailing Zeroes

172. Factorial Trailing Zeroes

172. Factorial Trailing Zeroes

Leetcode 172 Factorial Trailing Zeroes