gpt4 book ai didi

java - 阶乘的尾随零

转载 作者:行者123 更新时间:2023-12-02 06:33:08 29 4
gpt4 key购买 nike

我正在尝试解决这个编码问题:给定一个整数 n,返回 n 中尾随零的数量!

下面是我的代码(使用 wiki link 编解码器)

    public int trailingZeroes(int n) {
int count = 0, i = 5;
while(i<=n){
count+= n/i;
i*=5;
}
return count;
}

这适用于所有测试用例,除了当 n = Integer.MAX_VALUE 时我得到一个 TLE。我如何修复此代码以使其涵盖该测试用例。我在网上阅读了大约五篇文章,似乎所有内容都与我的方法一致。

非常感谢。

所以,我遵循了 long/BigInteger 方法(谢谢大家):

    public int trailingZeroes(int n) {
long count = 0;
for(long i= 5; n/i >= 1; i= i*5){
count+= n/i;
}
return (int)count;
}

最佳答案

正如 Iaune 观察到的,当 nInteger.MAX_VALUE 时,您的循环将永远不会终止,因为没有 int 大于该数字(根据定义)。您应该能够重组循环以避免该问题。例如,这是相同的基本方法,但颠倒过来了:

public int trailingZeroes(int n) {
int count = 0;

while (n > 0) {
n /= 5;
count += n;
}

return count;
}

关于java - 阶乘的尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785724/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com