public class ProjectEulerProblem20_Factorial_Digit_Sum {
public static void main(String[] args) {
BigInteger oneHundredFactorial = BigInteger.ONE;
for (int i = 100; i >= 1; i--) {
oneHundredFactorial = oneHundredFactorial.multiply(BigInteger.valueOf(i));
}
String k = oneHundredFactorial.toString();
char x;
int sum = 0;
for (int i = 0; i < k.length(); i++) {
x = k.charAt(i);
sum = sum + x;
}
System.out.println(sum);
}
}
我不知道我在哪里错了。我的输出应该是100中所有数字的总和!但是,我不知道为什么我的sum值是8232,当正确的答案是648.代码对我来说似乎很基本,它似乎有意义。如果有人能帮我解决我似乎错过的东西,那将非常感激。谢谢!
编辑: 这就是问题所在:
N!表示n×(n-1)×...×3×2×1
例如,10! = 10×9×...×3×2×1 = 3628800, 和数字10中的数字之和!是3 + 6 + 2 + 8 + 8 + 0 + 0 = 27。
找到数字100中的数字之和!
答案 0 :(得分:1)
如果要添加数字值,则添加ascii字符值。
memory.limit()
data<-read.table("volume.txt",sep="\t")[,c(ttl_units)]
require(data.table)
fread("shipped asin volume.txt",sep="\t", header= TRUE)-> pre
可以使用Character.digit(char, int)
之类的
sum = sum + x;
或强>
sum = sum + Character.digit(x, 10);
或强>
sum += Character.digit(x, 10);
答案 1 :(得分:1)
您要添加字符代码而不是数字;您可以使用Character.getNumericValue
来解决手头的问题。
将你的循环改为:
for (int i = 0; i < k.length(); i++) {
sum = sum + Character.getNumericValue(k.charAt(i));
}