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; } };
相关文章推荐
- Lintcode 2. 尾部的零
- LintCode 2.尾部的零
- LintCode Python 尾部的零
- Lintcode 尾部零的个数
- (lintcode)第2题尾部的零
- LintCode_002_尾部的零
- Lintcode 2: 尾部的零
- lintcode 2.尾部的零
- LintCode_002_尾部的零
- lintcode第二题 计算n阶乘中尾部零的个数
- python - LintCode 2. 尾部的零
- LintCode笔记(6)——尾部的零
- [LintCode] 尾部的零
- Lintcode 尾部的零
- LintCode 第二题 计算阶乘结果尾部的零
- LintCode 尾部的0
- LintCode 2 : 尾部的零(java实现)
- LintCode 尾部的零
- lintcode 2:尾部的零
- lintcode 求n!尾部的零的数目