绿眼谜题
独裁者将100个绿眼睛的完美逻辑家们囚禁于岛上,他们可以看到另外99个人是绿眼睛,却无从得知自己是绿眼睛;每个人都可以向独裁者申请离开岛,条件如下:如果自己是绿眼睛则离岛,否则死亡。每个逻辑家在不确认自己是绿眼睛的情况下,都不会申请离岛。当某天他们获取到一个外界信息:你们至少有1个人是绿眼睛,100天后,逻辑家们集体离岛,请问是为什么。
题解
数学归纳法
假设逻辑家的个数为n;
当n=2时;第1天,2个逻辑家都不会离岛,因为他们都看到了对方的绿眼睛;第2天,当他们得知彼此第1天没有离岛,说明自己是绿眼睛,2个逻辑家都申请离岛。
当n=3时;第1天,每个逻辑家都会先假设自己不是绿眼睛,基于此假设,另外2个逻辑家应当在2天离岛;第2天,因为每个逻辑家都在基于自己不是绿眼睛的假设,观测其他2个逻辑家的行为,都不会离岛;第3天,因为第2天另外2个逻辑家没有离岛,假设不成立,确定自己是绿眼睛,3个逻辑家申请离岛。
当n=4时;第1天,每个逻辑家都会先假设自己不是绿眼睛,基于此假设,另外3个逻辑家应当在3天离岛;第4天,因为第3天另外3个逻辑家没有离岛,假设不成立,确定自己是绿眼睛,4个逻辑家申请离岛。
归纳可得:当n=100时,第100天,100个逻辑家申请离岛。
疑问
对于逻辑家们的离岛选择,需要提供一个对他们每个人都是已知的信息:你们至少有1个人是绿眼睛。我的数学归纳法也是基于该信息开始推理,但这是一个已知信息,为什么在没有该信息的支持下,逻辑家们就不会离岛呢。
烧绳计时
若干根相同的绳子,从一头点燃绳子,烧尽需要1个小时;注意绳子是不均匀的,即并不是烧到中点为30分钟;请计时1小时15分钟。
题解
依题意得:从一头点燃绳子,烧尽需要1个小时;从两头点燃绳子,烧尽需要30分钟。
- 取三个根绳子,第一根点燃两头,第二根点燃一头,第三根先不点燃;
- 当第一根绳子烧尽时(30分钟),点燃第二根绳子的另一头;
- 当第二根绳子烧尽时(15分钟),点燃第三根绳子的两头;
- 待第三根绳子烧尽(30分钟),计时完成;(30+15+30 = 1小时15分钟)
海盗分金币
是说5个海盗抢得100枚金币,他们按抽签的顺序依次提方案:首先由1号提出分配方案,然后5人表决,投票要超过半数同意方案才被通过,否则他将被扔入大海喂鲨鱼,依此类推。假定“每个海盗都是绝顶聪明且很理智”,那么“第一个海盗提出怎样的分配方案才能够使自己的收益最大化?”
题解
从后往前推导:
- 当1-3号被喂鲨鱼后,4号的方案一定会被否决,5号独吞金币,所以4号一定要无条件支持3号的方案;
- 在1.的基础上,3号会给出(100, 0, 0)的分配方案,3、4号同意,方案通过;
- 在2.的基础上,2号会给出(98, 0, 1, 1)的分配方案,2、4、5号同意,方案通过;毕竟对于4、5号来说,1 > 0;
- 在3.的基础上,1号会给出(97, 0, 1, 0, 2)或(97, 0, 1, 2, 0)的分配方案,1、3、4或5同意,方案通过。
苹果装箱
有1000个苹果,分别装在10个箱子里。任意给出1到1000之间的一个整数,都可以用某几个箱子中的苹果数量相加获得此数。请列出这10个箱子中分别有多少个苹果。
题解
这个问题本质上是考察对二进制的理解
10个比特位可以表示2^10=1024个数字(0~1023);所以,我们可以在第1个箱子放
2
0
2^0
20个苹果,第2个箱子放
2
1
2^1
21个苹果,…,第9个箱子放
2
8
2^8
28个苹果,第10个箱子放剩余的苹果。
对于给出的任意1到1000之间的一个整数,我门只需要将其转换成二进制表示,如500=1,1111,0100
我们只需要组合:第3、5、6、7、8、9个箱子里面的苹果;4+16+32+64+128+256=500;
再举例:999=11,1110,0111,我们注意到,此时最高位为1,但是第10个箱子里面只有1000-511=489个苹果;所以,对于大于511的苹果数,我们要先取第10个箱子的苹果,然后其他箱子再凑出剩余的苹果数;999-489=510=1,1111,1110;这个很显然,只需要不取第1个箱子的苹果就好啦。
时钟角度
计算3时15分,时针与分针的夹角
题解
圆为360度,3时15分,分针指向3,时针介于3与4夹角的 15 60 = 1 4 \frac{15}{60}=\frac{1}{4} 6015=41处(时针从3走到4需要60分钟,现在走了15分钟);圆被划分为12个小时,则每个小时之间的夹角为 360 12 = 30 \frac{360}{12}=30 12360=30度,所以时针跟分针的夹角为 30 × 1 4 = 7.5 30\times\frac{1}{4}=7.5 30×41=7.5度。
质差硬币
8个硬币,其中1个质量比其他的轻,求至少要使用天平称几次,才能找出该硬币
题解
对于该类问题,我们要做是尽可能快地筛除数据。
- 各取3枚硬币放置天平,如果天平平衡,质差硬币在剩余2枚;进入2.;如果天平不平衡,进入3.
- 剩余两枚硬币称重
- 3选2称重;
所以至少要2次称重;这题跟我们平时用的二分法不太一样,以前我们用二分法每次可以筛除一半的数据;这里用3、3、2可以筛除6个或者5个数据。
白鼠试毒
有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时鉴别出哪瓶水有毒。
题解
10只小白鼠;因为
2
10
=
1024
>
1000
2^{10}=1024 > 1000
210=1024>1000;
将水从从1到1000编号,并转换为二进制表示;10只小白鼠每1只对应着二进制下的1位,例如,对于表示最低位的小白鼠,遍历从1到1000的数字二进制表示,如果该位为1,则小白鼠尝一点该瓶水;以此类推;24小时后常看小白鼠们的存活情况,10只小白鼠对应二进制的10位,死则为1,活则为0,得到的结果就是对应有毒的水(因为尝过该瓶水的小白鼠都死了)。
赛马
64匹马,8条赛道,无测速工具,需要赛马多少次找出前4名。
题解
对于该类问题,我们要做是尽可能快地筛除数据。
- 64匹马分8组,赛马8次,得到每个小组内的名次先后;在这一步,我们可以筛除每组的后4名,共32匹马;
- 每小组第1名赛马,得到组间的名次先后,在这一步,我们可以筛除4+4+4+4+3+2+1=22匹马;因为对于组间赛马的第4名,其对应组内的剩余3匹马肯定在前4名之外,以此类推。
- 此时,我们已经明确了第1名,还要确认剩余3名;共剩余3+3+2+1=9匹马相对速度未能完全知道。
- 最后,我们优先选取每组较差的马,即剩余第1组的第2名或者第2组的第一名;如果幸运的话,我们将在此轮得出前4名;否则需要加赛1轮;
所以,11轮可以保证找出前4名。
黑白小球
箱子中放入100个黑球和100个白球;每次从箱子中取出2个球;若为同色,则放入1个黑球,否则放入1个白球;问连续操作后,最后箱子剩余的最后1个球为什么颜色。
题解
这题抽象为连续异或操作;我们可以把黑球看作0,白球看作1:(1)同色0^0 = 0; 1^1=0;(2)异色1^0=1;
所以:连续操作就是100个0和100个1连续进行异或运算(因为异或运算满足交换律,所以每步取出的球颜色不重要,反正都是这200个球的异或运算,每次异或的结果代表着放回的球),因为黑白球的个数都为偶数个,所以运算结果为0,即最后剩余的球颜色为黑色。
完全平方数
一个4 位数,前 2 位相同,后 2 位相同;且为完全平方数;
题解
n = 1000a + 100a + 10b + b = 1100a + 11b = 11 * (100a + b) = 11 * (99a + a + b)
a + b必须为 11 的倍数,所以 a+b = 11
n = 11 * 11 * (9a + 1),9a+1为完全平方数,a=7,63+1 = 64
n = 7744
夫妇握手
有5对夫妇举行家庭聚会。每一个人都可能和其他人握手,但夫妇之间绝对不握手。聚会结束时,A先生问大家握手几次,结果是每个人的握手次数都不相同,那么请问A先生的太太握手几次?夫妇握手
题解
可以从2 对夫妇开始推导,如果是2 对夫妇,握手各不相同,那必然是 0 ,1, 2;A先生的太太为 1,0 和 2 为夫妇;为什么?因为 2 次是和非自己夫妇外的人都握手了,也就是其他夫妇至少为 1,0 自然就是自己的配偶;
如果是 3 对夫妇,0,1,2,3,4;0 和 4 为夫妇,1和 3 为夫妇;道理同上,4 次是和非自己夫妇外的都握手了,0 次就是自己的配偶;1 次就是跟 4 次的握手了,3 次就是 1 次的配偶,就是除了自己的配偶和 0 次,跟其他人都握手了。
为什么 1 次和 3 次一定是配偶呢?因为只有他满足 3 次握手的条件。他的配偶只跟 4 次的握手了,其他人没办法跟他握手,最大次数达不到3次。
考试做题
100 个人写 5道题,第 1 道题有 A 人做对,第二道题有 B 人做对,…求至少多少人做对 3 道及以上题目?考试做题
题解
这道题用逆向思维很快就解出来了,计算出总共的错题,至少错 3 道,把错题均摊到尽可能多的人身上。
均摊方式:
- 将错题从大到小排序
- 每次将最大的前3个分配给一人,然后重新排序
- 重复上面步骤,直到最后找不出3个不为0的数,也就是变为X,0,0,0,0或者X,Y,0,0,0。