读淘宝第一题 5个小白鼠测出几多瓶子状态 有感

读淘宝第一题 5个小白鼠测出多少瓶子状态 有感
原题:
有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我们用这五只小白鼠,5分钟的时间,能够检测多少瓶液体的成分
没说总瓶数,也没说小白鼠喝多少才死亡,以及小白鼠总共能喝多少。因此,可以自己做出假设,以满足自己想的最大的战果
假设:
1.小白鼠总共能喝1(a)瓶液体
2.小白鼠喝掉1/100(b)瓶毒药才会异常(也可说是死亡),少于1/100则无异常

因此,可以让每只小老鼠喝1瓶液体的总量,但是由100瓶液体的1/100组成(大于600瓶时,选择此数),由于只有1瓶是毒药,于是
1.总瓶数N大于600时,至少能够判断出500瓶是没有毒的.两种情况,无老鼠异常则500瓶无毒,毒药在剩下的N-500个瓶里;有老鼠异常,则毒药在异常老鼠喝的100瓶中,剩下的N-100都正常
2。总瓶数N小于600,不用每只老鼠喝100瓶里的1/100,而取N/6瓶液体的1/100(为了效果明显,也可取1/(N/6)),这种情况我就不细说,大家也都明白滴

所以,如果N很大,并且满足以上两个假设条件,则最多能测出至少多少瓶呢(5*a/b),上述假设下就是500瓶
------解决方案--------------------
logN,N是瓶数,结果就是要多少只老鼠。这题之前有人发过。
点C/C++大板还是升级中,模式及实现这小版本来就没什么人气。
------解决方案--------------------
你这个解法是有问题的,并不能知道具体是哪瓶有问题啊。如果是5只老鼠的话,最多只能确定31瓶。你可以看一下海明码