#牛客春招刷题训练营# + 链接

这题还比较有意思,主要使用逆推法

由题目 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;
}