码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode 2. 尾部的零

时间:2018-01-27 00:38:00      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:设计   note   复杂度   data   data-   统计   计算   out   时间复杂度   

题目:设计一个算法,计算出n阶乘中尾部零的个数。

样例

11! = 39916800,因此应该返回 2

挑战 

O(logN)的时间复杂度。

 

解:2*5=10;可当n!展开,观察得2的个数肯定比5的个数多,所以只需统计n!中5的个数即可知尾0的个数。

class Solution {
public:
    /*
     * @param n: A long integer
     * @return: An integer, denote the number of trailing zeros in n!
     */
    long long trailingZeros(long long n) {
        // write your code here, try to do it without arithmetic operators.
        long long sum=0;
        while(n>5)
        {
            sum+=n/5;
            n=n/5;
        }
        return sum;
    }
};

 

LintCode 2. 尾部的零

标签:设计   note   复杂度   data   data-   统计   计算   out   时间复杂度   

原文地址:https://www.cnblogs.com/zslhg903/p/8361847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!