入门题解 | ABC游戏
2025-01-20 15:58:46
发布于:上海
26阅读
0回复
0点赞
给全题解点个赞吧
(我个人认为这道题算这次欢乐赛中最难的题了。)
要用到数学中重要的分类讨论的思想。
首先将三个数排序,再寻找规律。不难看出与最大的数和另外两数之差有关系。
先通过操作二对较小的两数直至一数与最大数相同,再分类讨论。
如果现在最小的数与最大的数差为偶数,则步数直接加上差/2。(通过操作一)
为奇数加上差/2后会变为n-1,n,n,此时只需要再加2步即可。(一+二)
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;cin>>t;
for(int i=1;i<=t;i++){
int a[4],x=0,y=0;
cin>>a[1]>>a[2]>>a[3];
sort(a+1,a+4);
x=a[3]-a[1];y=a[3]-a[2];
if((x+y)%2==1) cout<<(x+y)/2+2;
else cout<<(x+y)/2;
cout<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个