FJUT第二周寒假作业D题解题

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用时较久,所以没啥关系,不用担心。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值