leetcode刷题笔记172 阶乘后的零

题目描述:


给定一个整数 n,返回 n! 结果尾数中零的数量。

示例1:

输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。

示例2:

输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.

说明: 你的解法应该为 O(logN) 时间复杂度。

题目分析:

要求末尾有多少个零,则该数应为x*10的形式等于x*(2*5k

也就是求该数分解质因子后有几个5就行,:如1*2*3*4*5=1*2*3*2*2*5(里面有一个5)所以结果为1个0

详见代码

 

解答代码:

class Solution {
public:
    int trailingZeroes(int n) {
        int sum=0;
        while(n>0){
            sum+=n/5;
            n/=5;
        }
    
        return sum;
    }
};
Code

 

posted @ 2018-04-30 18:35  二十四桥明月夜33  阅读(1746)  评论(0编辑  收藏  举报