啤酒两元一瓶,四个瓶盖换一瓶,两个空瓶换一瓶,十元钱喝几瓶?
递推迭代演算法浪费资源,直接用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瓶
推荐阅读: