当前位置: 华文星空 > 知识

1000桶水,其中一桶有毒,猪喝毒水后会在15分钟内死去,想用一个小时找到这桶毒水,至少需要几头猪?

2020-06-10知识

我想5头就够了吧。

将1000桶水按5进制编号,因为5^5>1000,所以每桶水的编号是一个五位数。将五头猪对应到每一位。首先喂每头猪5进制编号下该位数为0的水。15分钟内,如果某头猪死了,那么有毒的水该位就是0;然后过15分钟后,再喂还存活的猪5进制编号下该位数为1的水。15-30分钟内,如果某头猪死了,那么有毒的水该位就是1。以此类推,于是在一个小时内我们就可以判断有毒的水的编号在5进制下每一位是多少,从而找到这桶水。

我认为4头及以下的猪是不太可能完成这个任务的。因为1个小时内每头猪最多提供一下的信息:

0-15分钟死/15-30分钟死/30-45分钟死/45-60分钟死/不死。所以4头猪最多表示5^4<1000个可能的状态。不知道有没有更聪明的办法用更少的猪解决这个问题。

===================================================

在这里补充一个例子帮助大家思考这个问题:因为我们只在0,15,30,45分钟喂水,所以我们将这几个时间点记成第一二三四轮。5头猪称为1号猪2号猪3号猪4号猪5号猪。把1-1000号水按照5进制编号。

第一轮:喂1号猪5进制下末位数是0的水,喂2号猪5进制下倒数第二位数是0的水,喂3号猪5进制下倒数第三位数是0的水,喂4号猪5进制下倒数第四位数是0的水,喂5号猪5进制下倒数第五位数是0的水。

第二轮:开始前发现3号猪和5号猪死了。所以有毒的水的编号是0_0__. 喂1号猪5进制下末位数是1的水,喂2号猪5进制下倒数第二位数是1的水,喂4号猪5进制下倒数第四位数是1的水。

第三轮:开始前发现2号猪死了。所以有毒的水编号是0_01_. 喂1号猪5进制下末位数是2的水,喂4号猪5进制下倒数第二位数是2的水。

第四轮:开始前发现1号和4号还活着。喂1号猪5进制下末位数是3的水,喂4号猪5进制下倒数第四位数是3的水。

到60分钟的时候,发现1号死了,4号还活着。所以有毒的水的编号是04013。这个数在10进制下是508,所以是508号桶水有毒。