一道逻辑题……不容易的

问题描述:

一道逻辑题……不容易的
一个国王有1000瓶酒 其中1瓶有毒 喝了第二天就死 国王有群囚犯 他想让囚犯试毒 可是他第二天就想喝酒 那么请问最少动用多少囚犯
一个的话……就算他喝到毒酒,这里说的是最少……不是最好的情况啊,我也可以说只用一个,运气好的话就直接试出来了

思路:把1000瓶酒用2进制表示,每一个囚犯对应一位,因而1000需要用10位来表示,答案就是10.
第一步把十个人编号,比如说他们是ABCDEFGHIJ,A对应的是1,B对应的是2,C对应的是4,D对应的是8,E对应的是16,F对应的是32,G对应的是64,H对应的是128,I对应的是256,J对应的是512.
然后这些酒每瓶都编号,从1到1000;然后把编号分解成那十个数字代表的数字(这是一个特殊的数列,这些数字不重复相加,可以组成1-1023 的任何一个数字)比如说3就是1+2(A+B),769就是512+256+1(A+I+J).喂酒的时侯就把这瓶酒分给带有对应数字的a,3号酒就给A 和B喝,769号酒就给A和I和J喝.
第二天将死去的几个囚犯所代表的数字加起来,数字的总和代表毒酒的编号,就能找出哪一瓶是毒酒了