面试题 16.05.阶乘尾数

​​题目来源:

        leetcode题目,网址:面试题 16.05. 阶乘尾数 - 力扣(LeetCode)

解题思路:

       在不包括自身的情况下,10 只可以分解为 2*5 。显然求阶乘过程中,2 的个数远远多于 5 的个数,因此只需要求 5 的个数即可。

        区间 [1,n] 内 5 的倍数的个数为 n/5;区间[1,n] 中 25=5*5 的倍数的个数为 n/25.......因此区间[1,n] 内 5 的个数为 n/5+2*n/25+3*n/75......,代码实现时,通过不断将 n 除以 5 兵累加每次除后的n,得到答案。

解题代码:

class Solution {
    public int trailingZeroes(int n) {
        int count=0;
        while(n!=0){
            count+=n/5;
            n=n/5;
        }
        return count;
    }
}
 
 

总结:

        做题时,想到计算 5 的个数了,但遍历 5 的倍数,然后将被倍数循环除 5, 超时了。

        看官方题解做出来的。


猜你喜欢

转载自blog.csdn.net/2301_76145947/article/details/132419954