LintCode 2. 尾部的零

Posted zslhg903

tags:

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

题目:设计一个算法,计算出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. 尾部的零的主要内容,如果未能解决你的问题,请参考以下文章

LintCode 2. 尾部的零

LintCode 尾部的零

2. 尾部的零简单

2.尾部的零

如何优化C ++代码的以下片段 - 卷中的零交叉

小数去除尾部的0