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;
    }
  • 相关阅读:
    MZOJ #72 数字
    MZOJ #71 maple做数学题
    MZOJ #70 FFF团
    luogu 2051 [AHOI2009]中国象棋
    uva 280
    uva 260
    文件的基本处理
    文件的基础
    Turtle库
    π的计算
  • 原文地址:https://www.cnblogs.com/Li-ningning/p/13698049.html
Copyright © 2011-2022 走看看