zoukankan      html  css  js  c++  java
  • 牛客小百月赛 28 -- 位运算之谜

    链接:https://ac.nowcoder.com/acm/contest/7412/D
    来源:牛客网

    题目描述

    a+ b的值为xa&b的值为y,首先需要判断能否有一组a,b满足当前的情况,如果有,那么求出a xor b,否则输出−1

    输入描述:

    第一行为一个正整数t,表示组数第一行为一个正整数t,表示组数{}t
    (t<=2×105)(t<=2×10^5)t<=2×105

    接下来t行,每一行有两个整数x,y接下来t行,每一行有两个整数x,y{}tx,y
    (0<=x,y<=1×1018)(0<=x,y<=1×10^{18})0<=x,y<=1×1018

    输出描述:

    对于每一组数据,按题意输出a xor b或者-1

    示例1

    输入

    1
    2 1

    输出

    0
    示例2

    输入

    1
    2 2

    输出

    -1
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    ll solve(ll x ,ll y)///这个函数真的是太精了,我也是赛后看别人的,我当时用补位的想法一直wa
    {
        if(x < 0) return -1;
        if((x&y)) return -1;////  有冲撞位 , & 出来肯定不是0,所以返回-1 , 我这里说的冲撞位, 是指同1的位,就是冲撞的
        return x;///  符合条件,没有冲撞位,为什么是返回 x , 因为x跟y没有冲撞位,刚好x的1和y的1全都错开了,异或出来也是 x 
    }
    int main()
    {
        int a ;
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        cin>>a;
        while(a--){
            ll a , b ;
            ll x,y;
            cin>>x>>y;
            a = y;
            x = x-y*2;
            cout<<solve(x,y)<<endl;
        }
        
        
        return 0;
    }
  • 相关阅读:
    Intellij 常用技巧-持续更新
    Android界面组件的四种启动方式
    Preference Screen 首选项
    Oracle OCI-22053:溢出错误
    SQLPLUS使用
    Oracle中数字格式的文本化处理
    MP4V2 移植 (基于imx6 平台)
    IMX6Q camera 应用编程之 摄像头裁剪
    IMX6Q camera驱动分析 (4)
    IMX6Q Camera驱动分析 (3)
  • 原文地址:https://www.cnblogs.com/Li-ningning/p/13698049.html
Copyright © 2011-2022 走看看