牛牛爱喝酒

题目描述

牛牛是一个酒鬼,非常爱喝酒,一瓶酒m元钱,两个酒瓶可以换一瓶酒,四个瓶盖可以换一瓶酒,现在有 n 元钱,求最多可以喝多少瓶酒?

样例1

输入
2,12
返回值
19

说明

牛牛总计可以喝19瓶酒

题解

本题逻辑简单,先算出牛牛手里的钱可以购买多少酒即可。之后,只需要用2个变量记录下当前牛牛手里的酒瓶和瓶盖,再记录下当前牛牛可以喝的酒,一瓶酒提供一个瓶盖和一个酒瓶,从而计算下次可以获得的酒的数量,如此反复,直到无法换取新的酒。

int countWine(int m, int n) {
    int ans = 0;
    int wine = n / m;    //当前牛牛可以喝的酒
    int bottles = 0;    //当前空瓶子的数量
    int lid = 0;        //当前瓶盖的数量
    while (wine > 0) {
        ans += wine;     //加上本次可以喝的酒
        bottles += wine;    //瓶子增加
        lid += wine;        //瓶盖增加
        wine = bottles / 2 + lid / 4;    //计算下次可以喝的酒
        //瓶盖喝和瓶子更新    
        bottles %= 2;   
        lid %= 4;
    }
    return ans;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务