gpt4 book ai didi

java - 数量较多的问题

转载 作者:行者123 更新时间:2023-12-02 10:58:26 26 4
gpt4 key购买 nike

我正在尝试使用阶乘来计算尾随零的数量。

例如

4! = 24 所以你检索到 0。

9! = 362880 所以你检索到 1。

10! = 9! x 10 = 3628800 所以你检索到 2。

11! = 10! x 11 = 3.99168E7 所以你检索到 2。

    static double factorial(double n) {
double f = 1;
for(int i = 1 ; i <= n ; i++) {
f *= i;
}
return f;
}

static int numberOfZeros(double f) {
int ten = 1;
int count = 0;
for(;f%Math.pow(10, ten) == 0;count++) {

ten++;
}
return count;
}

在数字 n 为 22 之前,这段代码是可以的。但是当我尝试将 23 放入其中时,计数为 0。当然,数学上是23!有尾随零。

最佳答案

您不需要计算阶乘来计算尾随零。

看看你能除以 5 的幂(这是 10 中较大的因数)多少次。这是有效的,因为任何尾随零的数字都可以被 10 整除。您需要执行 5 的幂来捕获 5 多次出现的次数。

  • 45! = 45/25 = 1 + 45/5 = 9 = 10 个零。
  • 150! = 150/125 = 1 150/25 = 6, 150/5 = 30 所以 1 + 6 + 30 = 37 个零。

现在您所要做的就是编写代码。

关于java - 数量较多的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60714135/

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