算法题 阶乘后的零

题目:

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

示例 1:

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

示例 2:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/factorial-trailing-zeroes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

分析:

这道题讲道理解出来不难,但是,万万没想到的是问题出在了溢出上,开始无脑用了int,结果数据溢出了。然后,抱着一丝侥幸心理,换成了long,然而依旧溢出,在这个时候想到了并不熟悉的BigInteger,由于并不熟悉只好找篇文章参照着来写,最终成品如下:

代码:

 

public int trailingZeroes(int n) {
        BigInteger res = BigInteger.ONE;
        for (int i = 1; i <= n; i++) {
            res = res.multiply(BigInteger.valueOf(i));
        }
        int count = 0;
        while (true) {
            if (!((res.remainder(BigInteger.valueOf(10))).equals(BigInteger.ZERO))) {
                break;
            }
            res = res.divide(BigInteger.valueOf(10));
            count += 1;
        }
        return count;
    }

在编译器里测试了一下,没什么问题,但是,在力扣提交的时候,显示cannot find symbol,我笑了... ...

然后,只好手动导入了一下,import java.math.BigInteger;

 
原文地址:https://www.cnblogs.com/wxdmw/p/13328779.html