列表

详情


NC208337. 位运算之谜

描述

的值为的值为,首先需要判断能否有一组满足当前的情况,如果有,那么求出,否则输出
(其中

输入描述





输出描述

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

示例1

输入:

1
2 1

输出:

0

示例2

输入:

1
2 2

输出:

-1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 123ms, 内存消耗: 9760K, 提交时间: 2021-01-15 16:10:00

#include<stdio.h>
int main()
{
	long long t,x,y;
	scanf("%lld",&t);
	while(t--)
	{
		scanf("%lld%lld",&x,&y);
		if(x-2*y<0||((x-2*y)&y)!=0) printf("-1\n");
		else printf("%lld\n",x-2*y);	
	}	
}

C++11(clang++ 3.9) 解法, 执行用时: 471ms, 内存消耗: 3024K, 提交时间: 2020-09-23 17:32:18

#include<bits/stdc++.h>
using namespace std;
int main(){
	int t;
	cin>>t;
	long long x,y;
	while(t--){
		cin>>x>>y;
		long long ans=x-2*y;
		if(ans<0||ans&y) ans=-1;
		cout<<ans<<endl;
	}
}

pypy3(pypy3.6.1) 解法, 执行用时: 967ms, 内存消耗: 48208K, 提交时间: 2020-10-04 19:26:50

t=int(input())
for i in range(t):
    x,y=map(int,input().split())
    if(x<(y<<1) or ((x-y)&y!=y)):
        print(-1)
    else:
        print(x-(y<<1))

Python3(3.5.2) 解法, 执行用时: 1479ms, 内存消耗: 5952K, 提交时间: 2020-09-19 22:30:30

n=int(input())
while n:
    n-=1
    a,b=map(int,input().split())
    m=a-2*b
    if m<0 or  m&b:
        print(-1)
    else:
        print(m)

上一题