题解 | 变幻莫测(数学逆推)

变幻莫测

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;
}

全部评论

相关推荐

04-15 23:42
中山大学 Java
ResourceUtilization:过几天楼主就会捧着一堆offer来问牛友们该怎么选辣
点赞 评论 收藏
分享
FieldMatching:看成了猪头顾问,不好意思
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务