牛牛爱喝酒

牛牛爱喝酒

题目描述

牛牛是一个酒鬼,非常爱喝酒,一瓶酒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就可以了
}

猜你喜欢

转载自blog.csdn.net/weixin_51216553/article/details/110882095