1.问题描述
隔壁老王到酒庄买酒 , 小二说:我们正在进行优惠活动,每瓶酒2元,2个空瓶换1瓶,4个瓶盖换1瓶,问20块你总共喝多少瓶?
2.解析
以10元为例分析
10块 5瓶 5空瓶 5个盖子 :
1)5个盖子换1瓶 :2个盖子 6个空瓶 ,总数 6 ;
2)6个空瓶换3瓶 : 5个盖子 , 3个空瓶 ,总数 9;
3)5个盖子换1瓶 : 2个盖子 ,4个空瓶 ,总数 10;
4)4个空瓶换2瓶 : 4个盖子 ,2个空瓶,总数 12;
5)4个盖子换1瓶 : 1个盖子 ,3个瓶子,总数 13 ;
6)3个空瓶换1瓶 : 2个盖子 ,2个空瓶,总数 14 ;
7)2个空瓶换1瓶 : 3个盖子 ,1个空瓶,总数 15 ;
3.Java实现
private static void getAll(int money){
int all=money/2;
int gai=all,ping=all;
while(true){
//判断盖
int gall=gai/4;
ping+=gall;
all+=gall;
//剩下的盖子
gai=gai%4+gall;
//判断瓶
int pall=ping/2;
gai+=pall;
all+=pall;
//剩下的瓶子
ping=ping%2+pall;
//结束语句
if(gai<4&&ping<2)
break;
}
System.out.println("可以喝总瓶数 : "+all+" 瓶");
}
结果 :
输入 : 20
输出 : 35