巧妙利用二进制思想
对计算机bit的强大的理解力,用10只小白鼠查找出1000瓶药中有毒的那瓶。
题目:500瓶无色无味的药水,其中有一瓶毒药,9只小白鼠拿来实验,喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天死亡。如何在一天找出这瓶有毒的药水。备注:500<2的9次方
思路:9只小白鼠,喝了药第二天只有两种情况活着或者死亡,我们可以用二进制里面的0和1表示。0代表活着,1代表死亡。
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000000001 对应十进制编号第1瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000000010 对应十进制编号第2瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000000011 对应十进制编号第3瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000000100 对应十进制编号第4瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000000101 对应十进制编号第5瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000000110 对应十进制编号第6瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000000111 对应十进制编号第7瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000001000 对应十进制编号第8瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000001001 对应十进制编号第9瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000001010 对应十进制编号第10瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000001011 对应十进制编号第11瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000001100 对应十进制编号第12瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000001101 对应十进制编号第13瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000001110 对应十进制编号第14瓶药水
2022-04-16 19:18:55.816 17472-17472/com.example.aaaa D/tanlin: 二进制数:0000001111 对应十进制编号第15瓶药水
..........................................
2022-04-16 19:18:55.822 17472-17472/com.example.aaaa D/tanlin: 二进制数:111101110 对应十进制编号第494瓶药水
2022-04-16 19:18:55.822 17472-17472/com.example.aaaa D/tanlin: 二进制数:111101111 对应十进制编号第495瓶药水
2022-04-16 19:18:55.822 17472-17472/com.example.aaaa D/tanlin: 二进制数:111110000 对应十进制编号第496瓶药水
2022-04-16 19:18:55.822 17472-17472/com.example.aaaa D/tanlin: 二进制数:111110001 对应十进制编号第497瓶药水
2022-04-16 19:18:55.822 17472-17472/com.example.aaaa D/tanlin: 二进制数:111110010 对应十进制编号第498瓶药水
2022-04-16 19:18:55.822 17472-17472/com.example.aaaa D/tanlin: 二进制数:111110011 对应十进制编号第499瓶药水
2022-04-16 19:18:55.822 17472-17472/com.example.aaaa D/tanlin: 二进制数:111110100 对应十进制编号第500瓶药水
我们分别对500瓶药水进行了编号,让9只小白鼠喝下去按照
方式,根据小白鼠们的存活情况,判断对应的哪个编号有毒药。
举例:第499瓶药水 111110011
我们可以给 1 2 3 4 5 8 9 喝 如果它们都死亡则有毒药水就是第499瓶药。
二进制数:0000001111 对应十进制编号第15瓶药水
我们可以给 6 7 8 9 喝 如果6,7,8,9小白鼠都死亡则有毒药水就是第15瓶药。
后续可以用代码实现判断哪瓶药有毒药。