日期:2014-05-20  浏览次数:20791 次

一首面试题
有   1000   个苹果,10个箱子,怎么把这   1000个苹果放到   10个箱子里面才能让以后无

论要多少个苹果,都可以整箱的拿?

如何用程序表示出来?

------解决方案--------------------
1000以内的所有数字都可以被 10位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