求一段连续自然数的异或结果

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⌊ ( )⌋
(4 + 1,2) …
(4 + 1,2)01
又由于(2)中已证明 ⌊log 4 ⌋ = ⌊log (4 + 1)⌋ = ⌊log (4 + 2)⌋ = ⌊log (4 + 3)⌋ 得 4 +1= 即
⌊ ⌋ ⌊ ⌋
(4 + 1,2) …
(4 + 1,2)01
(4 , 2) …
(4 , 2)01 (4 + 1,2)01
⌊ ⌋ ⌊ ⌊
∈ ⌋, ⌊log

⌋+1 ∈

,2

∈ ⌋+1

⌋ ≤ log

< ⌊log <2

≤ <

: 2⌊


+ 1 ≤ 2⌊ 3 < 4

故有: 2⌊ ⌊log 即有 ⌊log 根据下取整定义可得: ⌊log 又由于 log + ⌋ ≤ log ∈ log 即 ⌊log ⌋ ≤ log + 3 4 2 4 ≤ ⌊log ⌋ + 3 4 < log + 3 < ⌊log 4 ⌋+1 ⌋ ≤ log + 3 < ⌊log 4 ⌋+1 ⌋ ≤ log
⌊ ( )⌋
时: f(4 , 4 − 3) = 4 ⨁(4 + 1)⨁(4 + 2)⨁(4 + 3)
=
⌊ ( )⌋
[
(4 , 2)⨁
(4 + 1,2)⨁
(4 + 2,2)⨁
(4 + 3,2)] ∗ 2
=
[
(4 , 2)⨁
(4 + 1,2)⨁
(4 + 2,2)⨁
(4 + 3,2)] ∗ 2
(4 , 2)⨁ (4 + 1,2)⨁ (4 + 2,2)⨁ (4 + 3,2)] ∗ 2 + [ (4 , 2)⨁ (4 + 1,2)⨁ (4 + 2,2)⨁ (4 + 3,2)] ∗ 2 + [ 当 = 0时: (4 , 2)⨁ (4 + 1,2)⨁ (4 + 2,2)⨁ (4 + 3,2) = 0⨁1⨁0⨁1 当 = 1时: (4 , 2)⨁ (4 + 1,2)⨁ (4 + 2,2)⨁ (4 + 3,2) = 0⨁0⨁1⨁1 当 ≥ 2时(证明附后) : ⌊log 4 ⌋ = ⌊log (4 + 1)⌋ = ⌊log (4 + 2)⌋ = ⌊log (4 + 3)⌋, ∈ (2) (4 , 2) = (4 + 1,2) = (4 + 2,2) = (4 + 3,2), ∈ , ≥2 (3) 故: f(4 , 4 − 3)
f( , ) = f(0, − 1)⨁f(0, − 1)⨁f( , ) = f(0, − 1)⨁f(0, ) ( − 1,4), − 1)⨁f( − ( , 4), ) = f( − 1 − 复杂度为常数次(不超过 7 次异或) 。 注意事项: f(4 , 4 − 3)中的4 是 4 的倍数,此函数本身并不是周期函数,而是类似 = ,只 是存在一个特殊的周期序列。 本文到此已基本结束, 有兴趣的可以继续看下文的证明, 仅作参考, 如有错误恳请指正。 证(1) : 当 = 0时: f(4 , 4 − 3) = f(0,3) = 0⨁1⨁2⨁3 = (00) ⨁(01) ⨁(10) ⨁(11) = (00) = 0 当 ∈
( , 4)是 4 的倍数,即 − ( , 4) ∈ { | = 其中 ∈ 且 ≥ 4。注意自然数 − 4 , ∈ }。 ( , 4) = 0,f(0, ) = f( − ( , 4), )仍然成立。 当 ∈ [0,3]时,可得 − 综上:
f(0, ) = f( − 最终求出
( , 4), ), ∈
=
( , 2) …
(
( , 2)
,ห้องสมุดไป่ตู้)
( , 2) ⨁
( , 2) …
( , 2)
( , 2)
= 其中 = ⌊log ⌋, = ⌊log 3. 连续自然数的异或
[ ⌋。
( , 2)⨁
( , 2)] ∗ 2
异或可看作统计二进制表示中对应位状态为 1 的奇偶个数的运算。从图中看出如下规 律: f(4 , 4 + 3) = 0, ∈ (1) 显然(数学归纳法)推论为 f(4 , 4 于是有 ( , 4) − 1)⨁f( − f(0, ) = f(0, − ( , 4), ) = 0⨁f( − ( = f( − , 4), ) ( , 4), ) + 3) = 0, , ∈ 且 ≤
⌊ ( )⌋
=
[ +
(4 , 2)⨁
(4 , 2)⨁
(4 , 2)⨁ [0⨁1⨁0⨁1] ∗ 2
(4 , 2)] ∗ 2
[0⨁0⨁1⨁1] ∗ 2 +
⌊ ( )⌋
=[
0∗2 ]+0∗2 +0∗2 =0
综上:f(4 , 4 − 3) = 0, 证毕。

证(2) : ⌊log 2 根据下取整定义: ⌊log 2 又 ,2
= 于是有


(4 + 1,2) …
(4 , 2) = 同理可证: (4 , 2) = (4 , 2) = 综上: (4 , 2) = 证毕。 (4 + 1,2) =
(4 + 1,2) (4 + 2,2) (4 + 3,2) (4 + 2,2) = (4 + 3,2), ∈ , ≥2


<
+
+ 1 ≤ 2⌊

< log
+
3 < log ( + 1) ≤ ⌊log 4
⌋+1
,故可根据上式最右端得 + 3 4 ≤ (⌊log ⌋ + 1) − 1 = ⌊log ⌋
根据 log 函数的单调性,显然: ⌊log 故 ⌊log 而 ⌊log (4 + 3)⌋ = log 4 3 3 = 2 + log + = 2 + log 4 4 = 2 + ⌊log ⌋ = ⌊2 + log ⌋ = ⌊log 4 ⌋ + ⌊log (4 + 2)⌋ = ⌊log 4 ⌋ ⌊log (4 + 1)⌋ = ⌊log 4 ⌋ 故 ⌊log 4 ⌋ = ⌊log (4 + 1)⌋ = ⌊log (4 + 2)⌋ = ⌊log (4 + 3)⌋, 证毕。 ∈ + 3 4 ⌋ = log + 1 4 = log + 2 4 = log + 3 4 ⌋ ≤ log + 1 4 ≤ log + ≤ log + 3 4 ≤ ⌊log ⌋
同理可证:
证(3) : 已知 ∈ , ≥ 2。 将4 用二进制展开: 4 = 则有: 4 +1= = =
⌊ ⌊ ⌋ ⌊ ⌋
(4 , 2) …
(4 , 2)00
(4 , 2) …
(4 , 2)00 (4 , 2)00
+1

(4 , 2) …

+ [01]

(4 , 2) …
(4 , 2)01
注意最后的等号是恒等变形,未对前面的位有任何改动。 另一方面,将4 + 1用二进制展开: 4 +1=
( , )
)
( ⨁ )∗2 ( ⨁ )∗2
综上: ⨁ = ∑
( ⨁ )∗2
以十进制自然数 为例,其转二进制公式为:
=
( , 2) ∗ 2 = [
( , 2) …
( , 2)
( , 2)]
( , 2)表示 除 2 取余数运算第 i+1 次的结果,即 的二进制表 其中 = ⌊log ⌋, 示中相应位的值,2 则是相应位的进率。 ⨁ = ( , 2) ∗ 2 ⨁ ( , 2) ∗ 2
求一段连续自然数的异或结果
最近看到用异或找出连续自然数中某一值重复 1 次/缺失的问题(出现奇偶次不同作为 查找特征的问题) ,针对其中与高斯求和法相类比的连续值求异或法,给出一种快速求法: 1. 已知条件: 定义域: 基本运算:异或符号记作⨁,真值表:
对应法则:记f( , ) = ⨁ = ⨁( + 1) ⨁ … ⨁ , < 且 , ∈ 。 规定:异或是双目运算符,当 = 时,特别规定f( , ) = f( , ) = 。 2. 异或性质: 1、交换律: ⨁ = ⨁ 2、结合律:( ⨁ )⨁ = ⨁( ⨁ ) 3、基本等式: ⨁ = 0, ⨁0 = , ⨁ ⨁ = 其中 , , ∈ 4、二进制分配率及推论: 设序列 , , … , , , , … , ∈ {0,1},自然数 = ( … ) , =( … 则 ⨁ =( … ) ⨁( … ) ,当 ≥ 时,有: ) ⨁( … ) ⨁ =( … … ( ⨁0) … ( ⨁ )… ( ⨁ ) =[ ( ⨁0) ( ⨁ )] 其中 ( ⨁ )是 ⨁ 的值,并将值赋给第 n 位。 令 , ,…, = 0则进一步有: ⨁ =[ ( ⨁ )… ( ⨁ ) ( ⨁ )] 转为十进制: ( ⨁ )… ( ⨁ ) ( ⨁ )] ⨁ =[ ( ⨁ )∗ 2 + ⋯+ ( ⨁ )∗2 + ( ⨁ )∗2 = = 当 < 时同理有: ⨁ = ∑
相关文档
最新文档