LintCode 2 尾部的零

来源:互联网 发布:数据库的逻辑结构设计 编辑:程序博客网 时间:2024/05/18 16:36

题目:trailingZeros


要求:设计一个算法,计算出n阶乘中尾部零的个数

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

算法要求:O(logN)的时间复杂度

解题思路:因为在10进制中,要想数的结尾有0,只有乘以10才可以。将n分解质因数,可以得到5和2,只需要找到有几个5,几个2就可以,因为2的个数比5多,只需要找到有几个5即可(注意这里的2和5为质因数)。

算法如下:

class Solution {public:    long long trailingZeros(long long n) {        long long m = 5;        long long count = 0;        while (m < n) {            count += n/m;            m*=5;        }        return count;    }};
0 0
原创粉丝点击