有 1000 个苹果,10个箱子,怎么把这 1000个苹果放到 10个箱子里面才能让以后无论要多少个苹果,都可以整箱的拿?如何用程序表示出来?

解决方案 »

  1.   

    那如果想用JAVA写出程序来表示怎么写?
      

  2.   

    这好像是微软的一道题吧!!
    将1000个苹果分别放进10个箱子,
    如1,2,4,8。。以此类推,最后一个箱子放489个,这样的在1000以内所有的数都可以组合出来!
    程序如下:
    public class TenPagApple {
    public static void main(String args[]) {
    //每个箱子给苹果数
    int []a = new int[10];
    a[0] = 1;
    for(int i=1; i<a.length; i++) {
    a[i] = a[i-1]*2;
    }
    //最后一个箱子数应该是512,这样10个箱子加起来超过1000,所以把多余的减出去,最后一个箱子是489
    for(int j=0; j<a.length; j++) {
    if(j == (a.length-1)) {
    int sum = 0;
    for(int k=0; k<a.length; k++) {
    sum +=a[k];
    }
    a[j] = a[j] - (sum-1000);
    }
    System.out.println("第"+(j+1)+"箱苹果数为"+a[j]);
    }
    int sum = 0;
    for(int k=0; k<a.length; k++) {
    sum +=a[k];
    }
    System.out.println("总苹果数为:" + sum);
    }
    }
    运行结果如下:
    第1箱苹果数为1
    第2箱苹果数为2
    第3箱苹果数为4
    第4箱苹果数为8
    第5箱苹果数为16
    第6箱苹果数为32
    第7箱苹果数为64
    第8箱苹果数为128
    第9箱苹果数为256
    第10箱苹果数为489
    总苹果数为:1000
      

  3.   

    1,2,4,8,16,32,64,128,256,489这样就可以了么.
    1,2,4,8,16,32,64,128,256这可以表示1-511的所有数的吧?
    489结合1-511所有的数就可以表示490-1000所有的数.
    程序的写法:   if(n<511)  将n化成2进制数.
        else 将(n-511)化成2进制数. 再加上489这个箱子里的苹果就是了.
      

  4.   

    good,思路对了就容易,想不到的就得撞墙!