172. 阶乘后的零

172. 阶乘后的零

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

提示 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1

 

示例 1:

输入:n = 3
输出:0
解释:3! = 6 ,不含尾随 0

示例 2:

输入:n = 5
输出:1
解释:5! = 120 ,有一个尾随 0

示例 3:

输入:n = 0
输出:0

 

提示:

  • 0 <= n <= 104

 

进阶:你可以设计并实现对数时间复杂度的算法来解决此问题吗?

 

解析:

看有几个5即可

但主要25有2个5,125有3个5,

而ret += n / base 会使得 以后的base都少一个5,所以每次除base时,由于前面已经加上了,所以只加一次就够了

class Solution {
public:
    int trailingZeroes(int n) {
        int ret = 0;
        int base = 5;
        while(base <= n)
        {
            ret += n / base;
            base *= 5;
        }



        return ret;

    }
};

 

posted @ 2022-10-06 21:53  WTSRUVF  阅读(24)  评论(0编辑  收藏  举报