100楼扔鸡蛋

100楼扔2个鸡蛋测试?

关键在于egg1+egg2的总测试次数为常量c。

假设egg1第一次在x楼,如果鸡蛋摔碎了,那么egg2要测试x-1次,总计1+(x-1);

如果鸡蛋没碎,那么egg1继续上升y楼,到达x+y楼,那么egg2要测试y-1次,总计1+1+y-1 = x,那么y=x-1

同理。。。

由此可见,为了保证egg1+egg2的总测试次数为常数c,对于egg1每次上升的次数依次为x,x-1,x-2,...1

那么只要x+(x-1)+(x-2)+...+1 = x(x+1)/2>100求得x=14

解释:egg1在14楼,27楼,39楼,50楼,60楼,69楼,77楼,84楼,90楼,95楼,99楼。

比如鸡蛋在14楼碎了,那么测试楼为14,1-13

鸡蛋在27楼碎了,那么测试楼为14,27,15-26

。。。

http://blog.csdn.net/lzshlzsh/article/details/5951447

 

变种题目

甲、乙两个人在玩猜数字游戏,甲随机写了一个数字,在[1,100]区间之内,将这个数字写在了一张纸上,然后乙来猜。
如果乙猜的数字偏小的话,甲会提示:“数字偏小”
一旦乙猜的数字偏大的话,甲以后就再也不会提示了,只会回答“猜对 或 猜错”
问: 乙至少猜(14) 多少次  猜可以准确猜出这个数字,在这种策略下,  乙猜的第一个数字是(14)。

分析:思想是:每次猜大后,尝试猜测的总次数是相等的。第一次猜测时,在1到100之间选择某个数N1后,有三种情况,一是直接选中了,这个概率比较小,对研究没有意义,二是选择偏大了,这时不再提示了,只能在1至N1-1之间一个一个地选了,三是选择偏小了,这时还有提示,可以继续在[N1+1,100]中选择另外的数N2。可以知道,若第一次就猜错了,那么尝试总次数是N1-1+1=N1次(因为是在[1,N1-1]之间逐一取值,且N1本身用掉一次),若第一次猜得偏小,但第二次猜大了,尝试总次数是[N1+1,N2-1]的元素个数加2(加2是N2和N1本身猜用掉一次),即为N2-N1+1次,根据思想“每次猜错后,尝试猜测的总次数相等”,有N1=N2-N1+1,可知N2=2N1-1,增量为N1-1。类似地,前两次猜得偏小,但第三次猜大,尝试总次数为[N2+1,N3-1]的元素个数加3,即N3-N2+2,那么有N3-N2+2=N1,N3=N2+N1-2,增量为N1-2……依此类推,增量是随着猜测次数的增加而逐1地减少。设最后一次猜测为k,则Nk=N1+(N1-1)+(N1-2)+…1,Nk是等于或大于100的第一个数,根据等差数列求和公式可以算出N1=14,N2=27,N3=39…(14,27,39,50,60,69,77,84,90,95,99)。