题解
首先,我们知道异或运算是无进位相加,那么a^b=x我们不妨先让a=x,b=0;而a,b其余二进制位上要么同为0,要么同为1。接下来,根据题意a+b=2x,我们可知我们同时为a,b加上x/2。此时再判断a^b是否等于x即可。
code
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main(){ int t; cin>>t; while (t--){ ll x; ll a,b; cin>>x; a=x/2; b=x+x-a; if ((a^b)==x) cout<<a<<" "<<b<<endl; else cout<<-1<<endl; } return 0; }
标签:Vlad,int,ll,cin,long,Numbers,Pair From: https://www.cnblogs.com/purple123/p/18119954