遞推迭代演算法浪費資源,直接用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 8

0 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瓶


推薦閱讀:
相关文章