1、1000瓶毒藥要至少多少只老鼠,假設每只老鼠吃了藥之後,如果中毒會24小時內毒發而死,才能找出具體的哪一瓶?
答案是至少10只,需要將藥混合起來,需要喂一輪。
位運算,每乙隻老鼠都可以當做乙個二進位,代表0和1,0代表老鼠沒事,1代表老鼠死了
根據2^10=1024,所以至少10個老鼠可以確定1000個瓶子具體哪個瓶子有毒。
為了更好的表達原理,將題目整體縮小為如何用3只老鼠確定8個瓶子(2^3 = 8)。
一位表示乙個老鼠,0-7表示8個瓶子。例如5號瓶子,對應是101,那就是老鼠1和老鼠3都得吃,4號瓶子對應是100,也就是只讓老鼠3吃。
對映關係:
000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7
每一位就表示乙個老鼠,右側的0-7表示8個瓶子。
例如5號瓶子,對應是101,那就是老鼠1和老鼠3都得吃;4號瓶子對應是100,也就是只讓老鼠3吃。
根據這個邏輯:分別將1、3、5、7號瓶子的藥混起來給老鼠1吃,2、3、6、7號瓶子的藥混起來給老鼠2吃,
4、5、6、7號瓶子的藥混起來給老鼠3吃,哪乙隻老鼠死了,相應的位置就為1。
現在對某瓶未知序號的毒藥,如果出現了情況是老鼠1死了、老鼠2沒死、老鼠3死了,這就是101情況對應5號瓶子,那麼就是101=5號瓶子有毒。
按照這個原理,10個老鼠也就可以確定1000個瓶子了。
2、明天晚上21:00的宴會需要9瓶酒,酒窖裡現有17瓶酒,其中有一瓶混入了慢性毒藥,只對人和老鼠有影響,吃了以後,無藥可醫,但需且僅需24小時發作。現在是晚上19:00,請問至少需要多少只老鼠才能選出宴會用的酒?
晚上19點到第二晚21點,還有26小時時間,24小時毒發可以允許還有兩個小時可操作,即所有操作要在今晚21點前完成:
情況一:嚴格24小時準時毒發而死
乙隻老鼠,每隔幾分鐘就按順序吃一瓶酒,那到了明天晚上19點開始觀察老鼠的死亡時間,就能反推出最初是哪一瓶酒是帶毒的了。
情況二:大約24小時才會毒發而死
給17瓶酒分別從1編號到17,然後分成兩組:
1組是1-9編號的酒共9瓶,
2組是10-17編號的酒外加上從1-9編號中的任意一瓶酒,共9瓶,
則共需要兩隻老鼠試喝2組中的酒,
則可能發生的結果為:
喝1組酒的老鼠死亡,則宴會用2組的9瓶酒
喝2組酒的老鼠死亡,則宴會用1組的9瓶酒
2只老鼠都死亡,則說明從1-9中拿出的那瓶酒是毒酒,則宴會使用剩餘16瓶中的任意9瓶
情況二原理就是二分法,哪一組沒出事就用那一組。
經典智力題 2
問題 你前面站了5個人,他們中間只有乙個人講真話 你只知道他們五個中有乙個只講真話,但其餘四個,他們有時候講真話,有時候講假話,只有一點可以確定,這四個人將真話和假話有個規律 如果這次講了真話,下次就會講假話,如果這次講假話,下次就講真話。你的任務是,把五個人中那個只講真話的人找出來。你可以問兩個問...
老鼠試毒問題
7瓶水1瓶有毒3只老鼠,怎麼找有毒的水,再加個條件,必須要求第二天出結果 二分查詢思路,每次均分兩組,每組各取一滴水混合成新溶劑餵給老鼠,繼續對導致老鼠死亡的一組水進行同上操作。假如是第1瓶有毒,過程演繹如下,第一只老鼠死於前一堆 mid 0 6 2 3,即服用了第1 2 3 4瓶的混合溶劑 第二隻...
智力題 1000瓶水和老鼠
題目 現在有1000瓶水,裡面有一瓶有毒,且老鼠喝了後24小時才毒發身亡,問若要求24小時內判斷出哪瓶水有毒,最少需要多少只老鼠?答 這其實是一道編碼問題,2 9 1000 2 10,所以需要10只老鼠。這裡舉8瓶水裡找毒藥的例子,8 2 3,所以需要三隻老鼠 老鼠就代表了每個二進位制位,1代表死亡...