牛牛爱喝酒
题目描述
牛牛是一个酒鬼,非常爱喝酒,一瓶酒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;
}
};