1000 个瓶子,有一个瓶子是有毒的,鸡吃了就会在一周后死去,吃其他的没问题。
给你一周的时间,1000 个瓶子,外加 10 只鸡,问那个瓶子是有毒的。
不是脑筋急转弯(其实原版是)。。。
称球吧?
2 ** 10 = 1024 > 1000
binary mask 看死了哪些鸡就知道了
#2 楼 @quakewang
#3 楼 @yfractal @quakewang 怎么喂鸡呢?
#4 楼 @linktoming 每个数是一个 2 进制编码,1000 个数总共需要十位编码。方案如下: 对于数字 i,对与 i 的二进制编码对应的鸡喂第 i 瓶药。比如对于数字 11,二进制位是(1011),于是把第 11 瓶药给第 1,2,4 只鸡吃。 最后判断方法如下: 假设第 i 瓶是毒药,那么 i 的二进制编码对应的鸡会死掉,比如是第 11 瓶是毒药,那么第 1,2,4 只鸡会死,其他鸡对没事。通过看那些鸡死掉,合成 2 进制编码,得到结果。