Acm - 隔壁老王买酒问题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值