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)