CF1605A A.M. Deviation

【题目】

https://www.luogu.com.cn/problem/CF1605A

【题目大意】

给定三个数,并可以进行以下操作若干次,使得三个数中,使得

|a1+a3-2a2|

的值最小。

操作: 取三个数中的两个数,其中一个+1,另一个-1。

【分析】

首先,由题意得,对于每次操作,2*a2的值要增加或减小2,另两个数中的一个要增加或减小1,即每次操作过后 |a1+a3-2a2| 的值会增大3或减小3。

易知:

当 |a1+a3-2a2|%3==0时,|a1+a3-2a2| 通过操作而得到的最小值必定为0;

当 |a1+a3-2a2|%3==1时,无法通过再一次操作使得该值更小;

当 |a1+a3-2a2|%3==2时,可通过一次操作分配给a1和a2各1,则操作后该值变为1。

【代码】

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int t,a,b,c;
 4 int main(){
 5     scanf("%d",&t);
 6     while(t--){
 7         scanf("%d %d %d",&a,&b,&c);
 8         printf("%d\n",abs(a+c-2*b)%3?1:0);
 9     }
10     return 0;
11 }

 

 
posted @ 2021-11-14 19:32  TheZealous  阅读(100)  评论(0编辑  收藏  举报