ARC A - +3 +5 +7

记录一下没见过的trick

即一起加一个等差数列,可以等效成和不变的形式 

和不变,使所有数变成一样,可以只关注sum而不需要关心每一个数的具体值

A - +3 +5 +7

题意:

ARC A - +3 +5 +7_第1张图片

ARC A - +3 +5 +7_第2张图片

思路: 

ARC A - +3 +5 +7_第3张图片

Code:

#include 

#define int long long

using namespace std;

int a[4];

void solve(){
	int sum=0;
	int cnt0=0,cnt1=0;
	for(int i=1;i<=3;i++){
		cin>>a[i];
		sum+=a[i];
		if(a[i]%2==0) cnt0++;
		else cnt1++;
	}
	if(sum%3!=0||(cnt0&&cnt1)){
		cout<<-1<<'\n';
		return;
	}
	if(a[1]==a[2]&&a[2]==a[3]){
		cout<<0<<'\n';
		return;
	}
	int d=sum/3;
	int res=abs(a[1]-d)+abs(a[2]-d)+abs(a[3]-d);
	if(res%4==0){
		cout<>__;
	while(__--)solve();return 0;
}

你可能感兴趣的:(操作,算法)