當前位置: 華文星空 > 知識

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號桶水有毒。