当前位置:网站首页 > 技术博客 > 正文

多个数字异或



求[1,n]所有数的异或和

如果加以打表,我们会发现其异或和有一定的规律

我们设f(x,y)表示区间[x,y]的异或和
那么有
对于k>=1
中,最高位的1出现了次,异或和为0,所以最高位可以去掉

所以

由此,对于所有,有
所以,对于,设其最高位为
那么
在中,最高位出现的次数取决与n的奇偶

1、若n为奇数,那么最高位出现了次为偶数,可以去掉
,可以发现与n具有相同的奇偶性,可以利用同样的推导去掉
最后的就取决于<4的部分,即mod 4后的异或和

那么我们有:
如果n为奇数
若,
若,

2、若n为偶数,那么最高位出现了次为奇数,一定可以保留
同样的,,可以发现与n具有相同的奇偶性,可以利用同样的推导去掉
最后的后两位就取决于<4的部分

那么我们有:
如果n为偶数
若,
若,

这样,我们就get了一个求连续数字异或和的方法

若,
若,
若,
若,

版权声明


相关文章:

  • 深度优先遍历需要借助什么数据结构2024-12-18 12:01:03
  • debian官方源2024-12-18 12:01:03
  • 安卓硬件模拟器2024-12-18 12:01:03
  • java接口的定义2024-12-18 12:01:03
  • sscom v5.13.1串口调试使用视频2024-12-18 12:01:03
  • 万成图文2024-12-18 12:01:03
  • linux中cp指令2024-12-18 12:01:03
  • ldap服务器的作用2024-12-18 12:01:03
  • 气体扩散模型2024-12-18 12:01:03
  • spring security oauth2 jwt 登出2024-12-18 12:01:03