按位异或在数字处理上的应用(hdoj1.2.3)

     其实也就是今天看了hdoj acm steps1.2.3的题解才顿悟的,原来也看到过这个^运算,没想到有多大用处,这个题目最开始的思路肯定是先弄一个字典,然后检查重复,但是最开始的一次居然连内存都超了。。。后来改进了一下变成了超时,想了两天,无果,看题解,被震到了。。。。。

      按位异或的计算非常简单,这个题的解题根据是异或运算的交换率和结合律,也就是(AB)C=A(BC),以及AB=BA,证明都是非常简单的,可以推导也可以验证。这样在处理1.2.3这个问题的时候就可以对所有的输入进行异或运算。由于除了你要找的那个数字,其他的数字都有偶数个(很关键!!),所以连续的运算之后的结果必然是那个只出现了一次的数字,因为你可以把所有的相同的数字配对放在一起(交换律和结合律),成为aabbccdd......的形式,而一个数字和自己进行异或运算的结果是0,所以如果要求的数是x,那么最后的结果就是x^0=x

          居然可以这么简单。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值