1.练习项目:
问题描述
在古老的中国,有一个神秘的传说。在一座寺庙中,有四个精美的瓷瓶,每个瓷瓶中都装有神秘的珍珠。珍珠的数量可以用来衡量寺庙的强大。寺庙的主持阿坤老师有一种神秘的力量,他可以做出以下操作:
- 选择一个瓷瓶,将其中的珍珠增加 2 个,同时将其他三个瓷瓶中的珍珠各减少 1 个。这个操作只有在其他三个瓷瓶中的珍珠数量都大于零时才能进行。
阿坤老师的目标是使得四个瓷瓶中最多珍珠的数量尽可能大。
你的任务是,给定四个瓷瓶中珍珠的初始数量,计算阿坤老师通过以上操作后,四个瓷瓶中最多珍珠的数量最大可以是多少。
输入格式
输入的第一行包含四个非负整数,分别代表四个瓷瓶中珍珠的初始数量。输入的四个整数的范围都在区间 [0,2×1e9] 中
输出格式
输出一行一个整数,表示阿坤老师通过操作后,四个瓷瓶中最多珍珠的数量最大可以是多少。
2.选择课程
在蓝桥云课中选择课程《16届蓝桥杯省赛无忧班(C&C++ 组)4期》,选择第二章“基础算法”编程30并开始练习。
3.开始练习
(1)源码:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll a[5];
int main()
{
for(int i=1;i<=4;i++) cin>>a[i];
sort(a+1,a+1+4);
//珍珠个数都相等时
if(a[1]==a[2]==a[3]==a[4])
{
cout<<3*a[1]<<endl;
return 0;
}
//第一种特殊情况:当存在珍珠等于0其他珍珠都相同时
if(a[1]==0&&a[2]==a[3]==a[4]) {
cout<<a[2]*2<<endl;
return 0;
}
ll ans = a[4]+2*a[1];
a[2]-=a[1];
ans+=a[2]/3*3;
if(a[2]%3 == 2) ans++;
cout<<ans<<endl;
return 0;
}
(2)检验结果
对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。
(3)练习心得:
解题思路
本题分三种情况(找最大珍珠数和结果的关系)
1:四个瓶子里面的珍珠都相等,那么就是a[1]的三倍
2:第一个瓶子里的珍珠为0,其余三个瓶子珍珠都相等 举例 0 9 9 9
2 8 8 8
1 7 7 10
0 6 6 12
2 5 5 11
1 4 4 13
0 3 3 15
2 2 2 14
1 1 1 16
0 0 0 18
最终结果是18,是a[2]的二倍
3:正常情况 举例 3 5 5 7结果是14,首先ans=a[4]+a[1]*2=13(此时a[1]==0,a[2]=2) a[2]/3乘以3=0,又因为5%3==2所以ans++得到结果
3 6 6 7结果是16
注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。