处女回复被鄙视了... 根据4楼提供的思路: public class Test { public static void main(String[] args) {
int[] array = new int[350]; array[0] = 1; boolean addOne = false; for(int i = 0; i < 1000; i++){ for(int j = 0; j < 350; j++){ int number = array[j] * 2; if(addOne) number++; if(number > 9){ array[j] = number % 10; addOne = true; }else{ array[j] = number; addOne = false; } } int sum = 0; for(int k = 0; k < 350; k++){ sum += array[k]; } System.out.println(i + ": " + sum); } // for(int m = 0; m < 350; m++){ // System.out.println(m + ":" + array[m]); // } } } 结果是1366
直接用BigInteger BigInteger two = BigInteger.valueOf(2); BigInteger pow = two.pow(1000);
这估计是个什么面试题之类的 就怕来一句不让用Java的api
长见识了~第一次看见用BigInteger~ 结果也一样 1366
import java.math.BigInteger; public class Test { public static void main(String[] args) {
BigInteger two = BigInteger.valueOf(2); BigInteger pow = two.pow(1000); String str= pow.toString(); int sum = 0; for(int i = 0; i < str.length(); i++){ sum = sum + str.charAt(i) - '0'; } System.out.println(sum); } } 是一样的..
是不是我想出来的重要吗?重要的是解决问题
ps:确实不是我想出来的,是在一个别的语言的邮件列表里看到的,后来想了想如果用java的话如何实现
试试java.math.BigInteger类看看!
java.math.BigDecimal 精确计算的!
最后是2进制的数组了!toString再一个一个加吧!
根据4楼提供的思路:
public class Test {
public static void main(String[] args) {
int[] array = new int[350];
array[0] = 1;
boolean addOne = false;
for(int i = 0; i < 1000; i++){
for(int j = 0; j < 350; j++){
int number = array[j] * 2;
if(addOne)
number++;
if(number > 9){
array[j] = number % 10;
addOne = true;
}else{
array[j] = number;
addOne = false;
}
}
int sum = 0;
for(int k = 0; k < 350; k++){
sum += array[k];
}
System.out.println(i + ": " + sum);
}
// for(int m = 0; m < 350; m++){
// System.out.println(m + ":" + array[m]);
// }
}
}
结果是1366
BigInteger pow = two.pow(1000);
结果也一样 1366
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger two = BigInteger.valueOf(2);
BigInteger pow = two.pow(1000); String str= pow.toString();
int sum = 0;
for(int i = 0; i < str.length(); i++){
sum = sum + str.charAt(i) - '0';
}
System.out.println(sum);
}
}
是一样的..