有题:
酒神小明与5个酒鬼朋友有210块钱想喝啤酒,啤酒3元一瓶,4个空瓶可以换一瓶啤酒,
问酒神小明和酒鬼朋友们一共能喝到多少瓶啤酒?(先告诉你答案:93)
怎么得到呢?
分析:
能喝到的啤酒数=210块钱能买到的啤酒数+210块钱买到的啤酒空瓶数换得的啤酒数
210块钱买到的啤酒数很好计算,就是总价/单价=210/3;
空瓶换得的啤酒数怎么算呢?
如本题初始空瓶数=210/3=70个,每次能换的啤酒数=空瓶数/4
1.这70个瓶子能换70/4=17瓶啤酒还剩2个酒瓶
2.17瓶啤酒喝完后又有17个空瓶,加上剩下的2个,还剩19个,有可以换19/4=4瓶啤酒还剩3个酒瓶
3.以此类推,当换到的酒瓶+上次剩下的酒瓶数不足以换一瓶啤酒的时候,就可以得到他们最终能喝到多少瓶了.
实现:
public static void main(String []args) {
int money = 210;//总金额
int subscriptionRatio = 4;//兑换比例
int price = 3;//单价
System.out.println("能喝 "+
(money/price+getBeerByBottle(money/price,subscriptionRatio))+" 瓶");
}
//获取能换多少瓶水
//a是空瓶数
//b是兑换比例,如本题4个空瓶兑换1瓶,b就是4
public static int getBeerByBottle(int a,int b){
if(a<b){//当空瓶数小于兑换比例的时候,能换0瓶
return 0;
}
//本次兑换啤酒数a/b,剩下瓶子数a%b
//喝完a/b瓶后剩下瓶子数a/b+a%b
//拿剩下的瓶子继续换啤酒
return a/b+getBeerByBottle(a/b+a%b,b);
}
最终得到结果是93瓶,其他类似的题可以直接改变总价,兑换比例或者单价求出。