Leetcode Factorial Trailing Zeroes

原创 2015年07月09日 22:50:40

2015年7月9日
Leetcode:Factorial Trailing Zeroes
Given an integer n, return the num er of trailing zeroes in n!

Note: Your solution should be in logarithmic time complexity.

题目大意:
给一个n,求出n!末尾有几个0。

如果我没记错的话这是微软的一个笔试题目。

n!=12.....n
如果n!=K10M,K不能被10除尽,则末尾有M个0。分析什么情况下怎么会在末尾产生0:
由于10=25,取[1,n]的任意两个数a,b,这两个数相乘要产生0,a跟b的所有因子中至少有一个5和一个2,这样才能在末尾产生0。1个5跟1个2就会产生一个0,x个5跟x个2就会产生x个0。
所以综上所述:需要统计n!中的因子5的个数num1,因子2的个数num2,则答案就是:
min(num1,num2)

这样迈出了一大步了,不难看出n!中因子5的个数远远小于2的个数,所以只需统计因子5的个数了。
所以得到如下程序:

class Solution {
public:
    int trailingZeroes(int n) {
        long long cnt = 0;
        for(int i = 1; i <= n; ++i){
            int num = i;
            while(num % 5 == 0){
                cnt++;
                num /= 5;
            }
        }
        return cnt;    
    }
};

时间复杂度On,很明显这样是会超时的。
再来看看能否继续迈出一大步。
公式:

Z=[n/5]+[n/52]+[n/53]+.

[n/5]表示不大于n的数中5的倍数贡献一个5,[n/x]表示不大于n的数中x(x=5y)的倍数贡献[n/x]个5,所以可得到如下代码:

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

时间复杂度Olog5n,Accepted。
转载请注明出处:blog.csdn.net/Royecode/article/details/46822913

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

leetcode 172. Factorial Trailing Zeroes

DescriptionGiven an integer n, return the number of trailing zeroes in n!.Note: Your solution should...

LeetCode 172 Factorial Trailing Zeroes

题目描述Given an integer n, return the number of trailing zeroes in n!.Note: Your solution should be in ...

leetcode172:Factorial Trailing Zeroes

题意:求一个整数的阶乘的尾数0的个数。分析:**方法一:**对n!做质因数分解n!=2x∗3y∗5z∗...n!=2^x*3^y*5^z*... 显然0的个数等于min(x,z)min(x,z),并且...
  • hjxzb
  • hjxzb
  • 2015年04月07日 10:37
  • 437

<LeetCode OJ> 172. Factorial Trailing Zeroes

172. Factorial Trailing Zeroes My Submissions Question Total Accepted: 45801 Total Submissions: ...

【一天一道LeetCode】#172. Factorial Trailing Zeroes

一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目...

[leetcode]Factorial Trailing Zeroes

博客园网址:http://www.cnblogs.com/ganganloveu/p/4193373.html Factorial Trailing Zeroes Given an int...

leetcode-172 Factorial Trailing Zeroes

看上去简单,但是写出logarithmic time complexity的代码还是需要一些思考的。分析在下面的代码注释中。 //计算包含的2和5组成的pair的个数就可以了,一开始想错了,还算了包含...
  • sole_cc
  • sole_cc
  • 2015年04月14日 18:28
  • 294

[LeetCode][172][Factorial Trailing Zeroes]

题目链接:https://leetcode.com/problems/factorial-trailing-zeroes/ 题目描述: Given an integer n, return the ...

LeetCode172——Factorial Trailing Zeroes

LeetCode172——Factorial Trailing Zeroes Given an integer n, return the number of trailing zeroes...

LeetCode Factorial Trailing Zeroes, Excel Sheet Column Number

Factorial Trailing Zeroes 题意:给一个数n,问n!的末尾有几个0 第一反应是0只有2、5相遇能出一个0,所以n有几个5的倍数似乎就是答案了。 (n!有k个5,肯定有k个2,能...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Leetcode Factorial Trailing Zeroes
举报原因:
原因补充:

(最多只允许输入30个字)