计算题:用几只猪能在一小时内找到一千桶水中有毒的那桶?

知乎日报 Sun AO 367℃ 评论

计算题:用几只猪能在一小时内找到一千桶水中有毒的那桶?

图片:《三只小猪》

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

限制条件:

1.一桶毒水足以导致一头猪的死亡。

2.猪很健康,没有疾病,也不会出现意外事故。其死亡只是毒水导致的,不会有其他因素导致死亡。

3.猪的承水量无穷大,因此不考虑猪因饮用了过量的水而拒绝继续实验的情况。

Sun AO

我想 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


在这里补充一个例子帮助大家思考这个问题:因为我们只在 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 号桶水有毒。

转载请注明:微图摘 » 计算题:用几只猪能在一小时内找到一千桶水中有毒的那桶?

喜欢 (0)or分享 (0)
发表我的评论