FJUT第二周寒假作业D题解题
题目来源:http://www.fjutacm.com/Contest.jsp?cid=161#P3
Home_W的位运算3
TimeLimit:1000MS MemoryLimit:128MB
64-bit integer IO format:%lld
Problem Description
学长说要有道傻逼题
于是就有了这道题
已知整数b1,b2,……,bn和c求一个整数a使得
a^ b1^ b2^ ……^ bn=c 其中^为按位异或
Input
接下来有T组数据
每组数据第一行是两个整数 n和c代表 b的个数和c的值
接着第二行有n个整数代表bi的值
T<1000
n<1000
bi,c<1,000,000,000
Output
输出a的值
SampleInput
4
2 99
52 60
3 16
31 38 57
3 33
52 76 87
1 69
16
SampleOutput
107
16
14
85
这题是一个关于位运算的水题
这题只要知道一点 异或运算是可以逆运算的 就可以ac了
让b=b1^ b2^ ……^bn,可以得到a ^ b = c 即为 c ^ b =a
for(int i=1;i<n;i++)
{
ans^=b[i];
}
a=ans^c;
就可以得到a了
另外使用C++的同学使用cin和cout用时会超过140ms,而使用scanf和printf会在30ms左右,只是因为cin和cout用时较久,所以没啥关系,不用担心。