您的位置:首页 > 其它

LintCode 2 尾部的零

2017-02-13 20:11 288 查看

题目: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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: