CF76D Plus and xor 题解
CF76D Plus and xor 题解
简化题意
一道大水题……
给出两个正整数
- 且要求
X 是所有满足前两个条件中最小的,如果无解,输出-1 ,否则,输出X,Y 。 -
分析
这里
先科普一下异或(
举个“栗”子:
先看
让我们再看看
我们再把这两个结果对比一下:
我们发现加法所得的结果只会比异或的结果多一些二进制下的
异或是不进位的加法,因此
由于加法得到的进位情况会是异或的
代码
接下来附上你们最爱的完整代码:
#include<iostream>
using namespace std;
unsigned long long int A,B,X,Y;
//坑点,2^64-1,需要unsigned long long int!
int main()
{
cin>>A>>B;//输入
if(A<B||A-B&1)
{ //无解
cout<<-1<<endl;
}
else
{
X=A-B>>1;
Y=A-X;
cout<<X<<' '<<Y<<endl;
}
return 0; //养成好习惯~
}
管理大大审核辛苦啦!