计算机学院大学生程序设计竞赛(2015’12)Bitwise Equations

网友投稿 729 2022-08-24

计算机学院大学生程序设计竞赛(2015’12)Bitwise Equations

计算机学院大学生程序设计竞赛(2015’12)Bitwise Equations

Bitwise Equations

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 633    Accepted Submission(s): 335

Problem Description

You are given two positive integers X and K. Return the K-th smallest positive integer Y, for which the following equation holds: X + Y =X | Y Where '|' denotes the bitwise OR operator.

Input

The first line of the input contains an integer T (T <= 100) which means the number of test cases.  For each case, there are two integers X and K (1 <= X, K <= 2000000000) in one line.

Output

For each case, output one line containing the number Y.

Sample Input

3 5 1 5 5 2000000000 2000000000

Sample Output

2 18 16383165351936

总是望着曾经的空间发呆,那些说好不分开的朋友不在了,转身,陌路。 熟悉的,安静了, 安静的,离开了, 离开的,陌生了, 陌生的,消失了, 消失的,陌路了。

#include #include using namespace std;long long rets=0;class jisuan{public: long long kthPlusOrSolution(int, int); string getBin(int);};string jisuan::getBin(int x){ string ret=""; if(x==0) { ret="0"; return ret; } while(x>0) { ret=char(x%2+'0')+ret; x/=2; } return ret;}long long jisuan::kthPlusOrSolution(int x, int k){ string strx, strk; strx=getBin(x); strk=getBin(k); int lx=strx.length()-1; int lk=strk.length()-1; string ret=""; while(lx>=0 && lk>=0) { if(strx[lx]=='1') { ret="0"+ret; --lx; } else { ret=strk[lk]+ret; --lx; --lk; } } while(lk>=0) ret=strk[lk--]+ret; for(int i=0;i<(int)ret.length();i++) rets=(rets<<1)+ret[i]-'0'; return rets;}int main(){ int n,x,k; jisuan bit; cin>>n; while(n--) { rets=0; cin>>x>>k; bit.kthPlusOrSolution(x,k); cout<

@执念  "@-但求“❤”安★ 下次我们做的一定会更好。。。。

为什么这次的题目是英文的。。。。QAQ...

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:计算机学院大学生程序设计竞赛(2015’12)Happy Value
下一篇:YTU 2907: 类重载实现矩阵加法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~