gpt4 book ai didi

java - 如何获取 BigInteger Value 中的所有数字总和?

转载 作者:行者123 更新时间:2023-12-03 21:14:55 25 4
gpt4 key购买 nike

我有以下问题:

如果 n1 & n2 是自然数且 n1 < 10 且 n2 <10000。找到 z 中所有数字的总和,其中 z = n1n2

例如。 n1 = 3, n2 = 10, z= 3^10 = 59049 如果您对数字求和 5+9+0+4+9= 27。结果=27
前任。 n1 = 2, n2 = 12, z= 2^12 = 4096 如果您对数字求和 4+0+9+6 = 19。结果=19

我目前的解决方案是:

public static long Solving(int n1, int n2) {
if (n1 >= 0 && n2 >= 0) {
BigInteger z = BigInteger.valueOf((long) Math.pow(n1, n2));
long sum = 0;

for (BigInteger i = z; i.compareTo(BigInteger.ZERO) > 0; i = i.divide(BigInteger.TEN)) {
sum += Integer.valueOf(String.valueOf(i.remainder(BigInteger.TEN)));
}
return sum;

}
return 0;
}

为什么所有案例在那个问题上都没有成功?

最佳答案

实际问题是Math.pow(n1, n2)

在这里,您将两个参数都视为 double 并尝试计算 n1n2,这很容易导致溢出。

相反,您可以使用 BigInteger#pow()摆脱溢出:

BigInteger z = BigInteger.valueOf(n1).pow(n2);

这将解决问题。

关于java - 如何获取 BigInteger Value 中的所有数字总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49050177/

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