题解 | 变幻莫测(数学逆推)
变幻莫测
https://www.nowcoder.com/practice/a704b3aa55ce48dfaf854bf7c7b3c989
#牛客春招刷题训练营# + 链接
这题还比较有意思,主要使用逆推法
由题目 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; }