2^1000 的各位数字之和是多少?编程如何解决?可能意思很难理解,举个例子:2的4次方=16,那么2的4次方的各位数字之和为1+6=7,现在问你2的1000次方之和是多少,如何编程解决?

解决方案 »

  1.   


    是不是我想出来的重要吗?重要的是解决问题
    ps:确实不是我想出来的,是在一个别的语言的邮件列表里看到的,后来想了想如果用java的话如何实现
      

  2.   

    JAVA不好解决,测了下LONG到2的62次方就是极限了,再多就溢出了。
      

  3.   

    要精确求吗?!
    试试java.math.BigInteger类看看!
    java.math.BigDecimal 精确计算的!
    最后是2进制的数组了!toString再一个一个加吧!
      

  4.   

    处女回复被鄙视了...
    根据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
      

  5.   

    直接用BigInteger    BigInteger two = BigInteger.valueOf(2);
        BigInteger pow = two.pow(1000);
      

  6.   

    这估计是个什么面试题之类的 就怕来一句不让用Java的api
      

  7.   

    长见识了~第一次看见用BigInteger~
    结果也一样    1366
      

  8.   


    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);
    }
    }
    是一样的..