牛牛爱喝酒
题目描述
牛牛是一个酒鬼,非常爱喝酒,一瓶酒m元钱,两个酒瓶可以换一瓶酒,四个瓶盖可以换一瓶酒,现在有 n 元钱,求最多可以喝多少瓶酒?
(注:没有借贷功能,即最终不允许借一瓶酒、喝完后拿酒瓶兑换归还的操作)
题目分析
这个很明显是小学奥数题,用瓶子和瓶盖换酒,思路就时时更新瓶盖的值和瓶子的值和喝的酒的数量,然后循环到结束(就是瓶盖不够四个,空瓶子不够两个)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n ,m;
cin>>m>>n;
int ans = n / m;//第一步就更新喝的酒的个数
int g = ans;//盖子数
int p = ans;//瓶子数
while(1)//直接循环,找机会break就可
{
if(p < 2 && g < 4) break;//跳出循环
else
{
if(p >= 2)//看看瓶子能不能换酒
{
ans += p / 2;//更新的是喝的酒的数
g += p / 2;//记得把盖子的数也更新一下
p = p / 2 + p % 2;//因为你花了空瓶子,但又换了空瓶子,就得记录好空瓶子的数量,一部分是换空瓶子剩下的,另一部分是换了新的酒得到的空瓶子
}
if(g >= 4)//同上
{
ans += g / 4;
p += g / 4;
g = g / 4 + g % 4;
}
}
}
cout<<ans;//输出ans就可以了
}