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

多个数字异或



求[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了一个求连续数字异或和的方法

若,
若,
若,
若,

  • 上一篇: datediff函数怎么用
  • 下一篇: 万成图文
  • 版权声明


    相关文章:

  • datediff函数怎么用2024-12-18 12:01:03
  • 深度优先遍历需要借助什么数据结构2024-12-18 12:01:03
  • debian官方源2024-12-18 12:01:03
  • ntp服务搭建2024-12-18 12:01:03
  • 安卓硬件模拟器2024-12-18 12:01:03
  • 万成图文2024-12-18 12:01:03
  • emwin与ucgui2024-12-18 12:01:03
  • vcc与vee的区别2024-12-18 12:01:03
  • c3p0连接池不释放连接2024-12-18 12:01:03
  • linux中cp指令2024-12-18 12:01:03