上一道精選創造力謎題
下一道精選創造力謎題

四公升的水創造力謎題

答對率:95%

井邊有容量5公升跟3公升的兩個水桶,
該如何利用這兩個水桶,裝出剛好4公升的水呢?

NaoLiBuJi(腦力補給)2012-07-11提供
來源:http://www.morningrefresh.com/iq/daily/2012-07-11/
看答案
  1. 把5L水桶裝滿,再從5L水桶把水倒到3L水桶裡;3L水桶到滿時,5L水桶裡剛好剩下2L的水
  2. 把3L的水桶倒空,再把5L水桶裡的2L水都倒進3L水桶裡
  3. 把5L水桶再次裝滿,再從5L水桶緩緩把水倒進倒到3L水桶裡,由於3L水桶裡原已有2L水,所以再倒1L就滿了,此時5L水桶裡就剛好剩下4L水

還有其他解法,歡迎到粉絲團去發表喔!

解析

我要編輯
兩個水桶的倒水問題,說穿了,
不是水桶 A 往水桶 B 一直倒,
就是水桶 B 往水桶 A 一直倒。
 
假設水桶 A 跟 B 的容量分別是 a 和 b,
每次固定用 A 取水然後往 B 倒,B 裝滿時把水倒光,
而目標是要讓兩個水桶內總共只留下 t 單位的水,
其中的 a、b、t 都是正整數,a、b 互質並且 t<a+b
(以上條件單純是想避開某些太過瑣碎的情況)

令 A 的裝水次數為 x,B 的倒水次數為 y,
不難列出 ax-by=t,根據貝祖定理
只要 t 是 gcd(a,b) 的倍數就一定有整數解,
這保證了只要一直倒就一定能倒出 t 單位的水,
最後做一下統計就得到 x 跟 y 了,
但也可透過擴展歐幾里得算法求得 x 跟 y。

舉個例子:
A 是 24L 的水桶,B 是 31L 的水桶,
目標是剩下 20L 的水在兩個水桶中,
可以先列出 24x-31y=20。
對 24、31 做輾轉相除法的過程可知:
31=24*1+7 -> 7=31*1+24*(-1)
24=7*3+3 -> 3=24*1+7*(-3)
7=3*2+1 -> 1=7*1+3*(-2)
接著從 1=7*1+3*(-2) 回推出:
1=7*1+[24*1+7*(-3)]*(-2) -> 1=24*(-2)+7*7
1=24*(-2)+[31*1+24*(-1)]*7 -> 1=31*7+24*(-9)
最後兩側同乘以 20 並做整理,
得到 24*(-180)-31*(-140)=20。
由於 24*(31k)-31*(24k)=0 明顯成立,
因此 x=31k-180、y=24k-140,
取 k=6 得到最小次數 x=6、y=4。

前面看似只有討論 A 往 B 一直倒,
其實要換成 B 往 A 一直倒的情況,
也就是 a 和 b 的值相互交換,
只需要把答案稍微變化一下就行了。
例如前面已知 24*6-31*4=20,
代表 31*(24-4)-24*(31-6)=20,
得到 x=20、y=25。
 
題外話:
現在看到這種題目,
作者給的答案如果是 A 往 B 一直倒,
就一定會有人給出 B 往 A 一直倒的方法,
如果是 B 往 A 一直倒,
就一定會有人給出 A 往 B 一直倒的方法。
那到底哪個比較快呢?
願意動一下腦的人應該都能好好比較,
而不是被精巧的敘述牽著鼻子走,嗯。
13,307
上一道精選創造力謎題
下一道精選創造力謎題