gpt4 book ai didi

java - 阶乘编程挑战困惑

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

我最近完成了一项编程挑战,要求我们获得 2015 年的阶乘。计算阶乘后,您将对整数(在本例中为 BigInteger)中的所有数字求和。

完成后,我得到的结果是:23,517

但是,当我将其提交给教授时,他说正确的结果是:26,532

我似乎根本找不到问题所在。我交叉检查了多个来源,到目前为止一切似乎都表明我是对的。有人能找到我的代码哪里出错了吗?

import java.math.BigInteger;

class toymeister {

public static void main(String[] args){
System.out.println("The sum is: " + SumOf(FactorialOf(2015)));
}

public static BigInteger FactorialOf(int x){
BigInteger Answer, intConvert;

intConvert = new BigInteger("0");
Answer = new BigInteger("1");

for(int i=1; i<=x;i++){
intConvert = intConvert.valueOf(i);
Answer = Answer.multiply(intConvert);
}

System.out.println("The Factorial Of " + x + " is: " + Answer);

return Answer;
}

public static BigInteger SumOf(BigInteger y){
BigInteger Sum = new BigInteger("0");

while(y.compareTo(BigInteger.ZERO) > 0) {
Sum = Sum.add(y.mod(BigInteger.TEN));
y = y.divide(BigInteger.TEN);
}

return Sum;
}
}

最佳答案

答案23517 is correct 。不过,您可以简化代码:

public static BigInteger factorialOf(int x) {
BigInteger answer = BigInteger.ONE;
for(int i = 1; i <= x; i++) {
answer = answer.multiply(BigInteger.valueOf(i));
}
System.out.println("The Factorial Of " + x + " is: " + answer);
return answer;
}

public static int sumOf(BigInteger y) {
String digits = y.toString();
int sum = 0;
for(int i = 0, n = digits.length(); i<n; i++) sum += digits.charAt(i)-'0';
return sum;
}

或者,使用 Java 8:

public static BigInteger factorialOf(int x) {
return IntStream.rangeClosed(1, x).mapToObj(BigInteger::valueOf)
.reduce(BigInteger::multiply).orElse(BigInteger.ONE);
}
public static int sumOf(BigInteger y) {
return y.toString().chars().map(i -> i-'0').sum();
}

关于java - 阶乘编程挑战困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33811495/

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