这是我的代码 这应该输出(8477559501395327),但它给(2084842641) 这是问题所在。我尝试了长而不是int,但它提供了一些不同的答案
int counter = 0;
int counter2 =0;
int k=203903;
int result=0;
int countequalk =0;
int i=0;
while(true){
if( i % 2 != 0){
counter++;
if(counter<k){
counter2=counter2+counter;
}
//System.out.println(counter+" "+i);
if(counter>counter2&&counter<=counter2+k){
result = result+i;
countequalk++;
}
if(countequalk==k){
break;
}
}
i++;
}
System.out.println(result);
答案 0 :(得分:2)
号码8477559501395327
不适合int
- 支持2^31 - 1
指定的值Integer.MAX_VALUE
。请尝试使用long
,其最大值为2^63 - 1
,如Long.MAX_VALUE
所示。此值大于8477559501395327
,因此适合。对于更大的数字,最好使用BigInteger
。