#牛客春招刷题训练营# + 链接
这题还比较有意思,主要使用逆推法
由题目 x'=x+y, y'=x-y 可得 x=(x'+y')/2, y=(x'-y')/2
显然目标状态是 (a, a)
因为对换没有意义,倒数第一个状态只能是 (a, 0)
对倒数第二个状态进行分类讨论,可以为 (0, a) 或者 (a/2, 0) 【与 (a, 0) 本质上相同,不展开】
对倒数第三个状态进行分类讨论,可以为 (a/2, -a/2) 或者 (a, 0) 【重复状态,不展开】
对倒数第四个状态进行分类讨论,可以为 (a/2, 0) 或者 (-a/2, a/2) 【均属于本质相同状态】
简单归纳一下即可得知,只有4种特征状态能满足要求,其他全都 -1
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
while (cin >> a >> b) {
if (a==b) puts("0");
else if (b==0) puts("1");
else if (a==0) puts("2");
else if (a+b==0) puts("3");
else puts("-1");
}
return 0;
}



京公网安备 11010502036488号