E. Vlad and a Pair of Numbers

题解

首先,我们知道异或运算是无进位相加,那么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;
} 
复制代码

 

posted @   黑屿白  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示