蓝桥杯备考冲刺必刷题(C++) | 3974 四个瓷瓶的神秘游戏

学习C++从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。

附上汇总贴:蓝桥杯备考冲刺必刷题(C++) | 汇总-CSDN博客


【题目描述】
在古老的中国,有一个神秘的传说。在一座寺庙中,有四个精美的瓷瓶,每个瓷瓶中都装有神秘的珍珠。珍珠的数量可以用来衡量寺庙的强大。寺庙的主持阿坤老师有一种神秘的力量,他可以做出以下操作:

  • 选择一个瓷瓶,将其中的珍珠增加 2 2 2个,同时将其他三个瓷瓶中的珍珠各减少 1 1 1个。这个操作只有在其他三个瓷瓶中的珍珠数量都大于零时才能进行。

阿坤老师的目标是使得四个瓷瓶中最多珍珠的数量尽可能大。
你的任务是,给定四个瓷瓶中珍珠的初始数量,计算阿坤老师通过以上操作后,四个瓷瓶中最多珍珠的数量最大可以是多少。
【输入】
输入的第一行包含四个非负整数,分别代表四个瓷瓶中珍珠的初始数量。输入的四个整数的范围都在区间 [ 0 , 2 × 1 0 9 ] [0,2\times 10^9] [0,2×109]
【输出】
输出一行一个整数,表示阿坤老师通过操作后,四个瓷瓶中最多珍珠的数量最大可以是多少。
【输入样例】

3 3 3 3

【输出样例】

9

【代码详解】
[图片]

#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[6];
signed main()
{
    for (int i=1; i<=4; i++) {  // 输入4个瓶的珍珠数量
        cin >> a[i];
    }
    sort(a+1, a+4+1);  // 按照从小到大排序
    if (a[2]==a[3] && a[3]==a[4]) {  // 特判2、3、4三个瓶的数量相同
        a[1] += a[2]*2;  // 则最大值为a[1]增加后的值
        cout << a[1] << endl;
        return 0;
    }
    a[4] += a[1]*2;  // 将a[1]置为0,计算a[1]、a[2]、a[3]
    a[3] -= a[1];
    a[2] -= a[1];
    a[1] = 0;
    if (a[2]==0) {  // 如果a[2]为0
        cout << a[4] << endl;  // 最大值就是a[4]
    } else if (a[2]%3==0) {  // 如果a[2]是3的倍数
        a[4] += (a[2]/3) * 3;  // 则a[4]则增加3个倍数
        cout << a[4] << endl;
    } else {  // 否则
        a[4] += a[2]-1;  // a[4]增加a[2]-1(通过数据找规律得到公式)
        cout << a[4] << endl;
    }
    return 0;
}

【运行结果】

3 3 3 3
9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值