算法题:1000个药瓶有1个毒药,10个小白鼠,无数个试管(用于混药),请问怎么一次性找出毒药?同时喝,一次性出结果。

1)10个小白鼠 那就是2**10 = 1024 刚好10位二进制;药共1000个,给药瓶编号1-1000,并且转化为二进制表示;
则药瓶编号为:
00 0000 0001
00 0000 0010
00 0000 0011
00 0000 0100
...
2)老鼠喝不同编号,但有规律的瓶子
// 老鼠1 -> 只喝第xx xxxx xxx1 -> 老鼠死了 说明第0位就是 1
// 老鼠2 -> 只喝第xx xxxx xx1x -> 老鼠没死,说明第1为就是 0
// 老鼠3 -> 只喝第xx xxxx x1xx -> 老鼠没死,说明第2为就是 0
// 老鼠4 -> 只喝第xx xxxx 1xxx -> 老鼠没死,说明第3为就是 0
// ...
3)合并每个值
// 最终找出那个数字如 11 0010 0001 转为十进制就是第801瓶

posted @ 2023-01-06 15:28  Math点PI  阅读(248)  评论(0编辑  收藏  举报