啤酒兩元一瓶,四個瓶蓋換一瓶,兩個空瓶換一瓶,十元錢喝幾瓶?
遞推迭代演算法浪費資源,直接用m=4k-5運算即可;
喝的總瓶數m=4*初次瓶數k-5,詳細過程參見我的解答(點擊我的用戶名,最下方的那條解答)。
4塊錢能喝3瓶;
6塊錢能喝7瓶;
8塊錢能喝11瓶;
10塊錢能喝15瓶;
12塊錢能喝19瓶;
14塊錢能喝23瓶;
16塊錢能喝27瓶;
18塊錢能喝31瓶;
20塊錢能喝35瓶;
30塊錢能喝55瓶;
40塊錢能喝75瓶;
50塊錢能喝95瓶;
60塊錢能喝115瓶;
70塊錢能喝135瓶;錢 酒 空 蓋 累計
10 0 0 0 0 0 5 0 0 5 0 0 5 5 5 0 3 1 1 80 0 4 4 8
0 3 0 0 11 0 0 3 3 11 0 1 1 3 12 0 0 2 4 12 0 2 0 0 14 0 0 2 2 14 0 1 0 2 15 0 0 1 3 15 0 1 0 1 16 (倆瓶蓋相當於一空瓶)0 0 1 2 16
0 1 0 0 17 0 0 1 1 17 0 1 0 -1 18 (欠一個蓋) 0 0 1 0 18 0 1 -1 0 19 (欠一個空瓶) 0 0 0 1 19 0 1 -1 -1 20 (欠一個空瓶和一個蓋) 0 0 0 0 20 (喝完最後一瓶,還清欠賬)另一種方法,設每個空瓶 x 元,每個蓋 y 元,每瓶酒(不含空瓶和蓋)z 元,那麼
x + y + z = 2 (每瓶酒 2 元,包括空瓶和蓋)
2x = 2 (倆空瓶換一瓶酒)4y = 2 (四個蓋換一瓶酒)所以,x = 1,y = 0.5,z = 0.5
10 / 0.5 = 20(瓶)
BTW:如果賣酒老闆不同意借空瓶和蓋……
如果老闆不同意借空瓶和蓋,那麼可以先要 20 瓶酒,喝完了,放下 10 元錢,然後拍屁股走人。一個瓶蓋五角,一個空瓶一元,一瓶酒五角,粗線條地算是二十瓶。但是事情不會那麼簡單。
仔細看,十元買五瓶,得五個空瓶和五個瓶蓋(5);四個空瓶換兩瓶,四個瓶蓋換一瓶,現在手上有三瓶酒和一個空瓶,一個瓶蓋(8);喝掉之後拿四個空瓶換兩瓶,四個瓶蓋換一瓶(11);喝掉三瓶酒剩三個空瓶和三個瓶蓋,用兩個空瓶換一瓶酒(12);喝掉那一瓶酒,有了兩個空瓶和四個瓶蓋,可以換來兩瓶酒(14);兩瓶酒喝掉剩兩個空瓶和兩個瓶蓋,可以換一瓶酒(15);一瓶酒喝掉,剩一個空瓶和三個瓶蓋,價值2.5元,前面喝掉的15瓶酒價值7.5元,加起來共10.00元。所以一共可以喝15瓶酒。
假如能喝x瓶, 那麼x/4 + x/2 + 10/2 = x 解出 x=20 OK
賣酒老闆不同意借空瓶和蓋 15瓶 否則20瓶
推薦閱讀: