#include <iostream>
using namespace std;
int main() {
int x,y;
cin>>x>>y;
if(x+y == 0&&x != y) cout<<3;
else if(x == 0&&y != 0) cout<<2;
else if(x != 0&&y == 0) cout<<1;
else if(x == y) cout<<0;
else cout<<-1;
return 0;
}
// 64 位输出请用 printf("%lld")
根据瞪眼法,可以发现只有在这条路径上的情况才能经过题目中给定的两种操作的到X==Y;
只需要把这上面的情形列举出来就可以。
我的思路过程:要想得到X==Y,那么前一步必定是操作2,而经过操作2要得到X==Y,Y就只能为0。
那么就要考虑0的来源,根据题目不难得出0只能由X+Y得出,即X和Y必须是相反数。
最后再根据运算过程补充完善一下,就可以得出图中的操作过程。

京公网安备 11010502036488号