背景
- 最近看到用异或找出连续自然数中某一值重复1次/缺失的问题(出现奇偶次不同作为查找特征的问题),针对其中与高斯求和法相类比的连续自然数(或连续整数)值求异或法,给出一种快速求法,最坏时间复杂度为7次异或。
1. 预定义
- 定义域: N N N
- 基本运算:异或符号记作
⨁
⨁
⨁,真值表:
- 对应法则:记 f ( a , b ) = ⨁ i = a b i = a ⨁ ( a + 1 ) ⨁ … ⨁ b , a < b 且 a , b ∈ N f(a,b)=⨁_{i=a}^b i=a⨁(a+1) ⨁…⨁b,a<b且a,b∈N f(a,b)=⨁i=abi=a⨁(a+1)⨁…⨁b,a<b且a,b∈N。
- 规定:异或是双目运算符,当 b = a b=a b=a时,特别规定 f ( a , b ) = f ( a , a ) = a f(a,b)=f(a,a)=a f(a,b)=f(a,a)=a,表示未参与异或运算。
2. 结论
f
(
a
,
b
)
=
f
(
a
−
1
−
m
o
d
(
a
−
1
,
4
)
,
a
−
1
)
⨁
f
(
b
−
m
o
d
(
b
,
4
)
,
b
)
,
其
中
a
,
b
∈
N
,
a
≤
b
f(a,b)=f(a-1-mod(a-1,4),a-1)⨁f(b-mod(b,4),b),其中a,b∈N, a≤b
f(a,b)=f(a−1−mod(a−1,4),a−1)⨁f(b−mod(b,4),b),其中a,b∈N,a≤b
其中
m
o
d
mod
mod为取余运算。
- 代码示例:(示例代码的适用范围已从连续自然数扩展为连续整数,见推论1)
from _operator import xor, mod
# f(a,b) = f(a-1-mod(a-1,4),a-1)⨁f(b-mod(b,4),b)
def N_seq_xor(a, b):
if not isinstance(a, int) or not isinstance(b, int):
raise ValueError('Parameters should be integers!')
if a > b:
print('Warning: Parameters should be in ascending order! Try to exchange the values of "a" and "b" before running!')
return N_seq_xor(b, a)
pace = b - a
if pace < 4: # 0 won't make any difference to the xor result.
a_0 = a
a_1 = 0 if pace < 1 else a_0 + 1
a_2 = 0 if pace < 2 else a_0 + 2
a_3 = 0 if pace < 3 else a_0 + 3
return xor(xor(a_0, a_1), xor(a_2, a_3))
else:
return xor(N_seq_xor(a-1-mod(a-1, 4), a-1), N_seq_xor(b-mod(b, 4), b))
推论
推论部分为3.证明之后的额外内容,可略过。
- 推论1:以
0
0
0与除数
y
y
y构成的半开区间为模除的值域(即
[
0
,
y
)
[0,y)
[0,y)和
(
−
y
,
0
]
(-y,0]
(−y,0],
y
∈
N
+
y∈N^+
y∈N+),补充
m
o
d
mod
mod定义
m o d ( − x , y ) = − m o d ( x , y ) + y , m o d ( x , − y ) = m o d ( x , y ) − y , m o d ( − x , − y ) = − m o d ( x , y ) , 其 中 x ∈ N , y ∈ N + \begin{aligned} &mod(-x,y)=-mod(x,y)+y,\\ &mod(x,-y)=mod(x,y)-y,\\ &mod(-x,-y)=-mod(x,y),\\ \end{aligned} 其中x∈N, y∈N^+ mod(−x,y)=−mod(x,y)+y,mod(x,−y)=mod(x,y)−y,mod(−x,−y)=−mod(x,y),其中x∈N,y∈N+,
则公式
f ( a , b ) = f ( a − 1 − m o d ( a − 1 , 4 ) , a − 1 ) ⨁ f ( b − m o d ( b , 4 ) , b ) , 其 中 a , b ∈ Z , a ≤ b f(a,b)=f(a-1-mod(a-1,4),a-1)⨁f(b-mod(b,4),b), 其中a,b∈Z, a≤b f(a,b)=f(a−1−mod(a−1,4),a−1)⨁f(b−mod(b,4),b),其中a,b∈Z,a≤b
仍成立,且公式(1)(2)(3)仍成立(证明略)。 - 推论2:特别地,当
a
=
4
k
,
k
∈
Z
a=4k, k∈Z
a=4k,k∈Z且
b
∈
Z
,
a
≤
b
b∈Z, a≤b
b∈Z,a≤b时,
m
o
d
(
a
,
4
)
=
0
mod(a,4)=0
mod(a,4)=0,
记 p a c e = m o d ( b − a , 4 ) pace=mod(b-a,4) pace=mod(b−a,4),则有
p a c e pace pace | f ( a , b ) f(a,b) f(a,b) |
---|---|
0 0 0 | b b b |
1 1 1 | 1 1 1 |
2 2 2 | b + 1 b+1 b+1 |
3 3 3 | 0 0 0 |
- 代码示例:(示例代码的适用范围已从连续自然数扩展为连续整数,见推论1)
from _operator import xor, mod
def N_seq_xor_4k_start(a, b):
if not isinstance(a, int) or not isinstance(b, int):
raise ValueError('Parameters should be integers!')
if a > b:
raise ValueError('Parameters should be in ascending order!')
if mod(a, 4) != 0:
raise ValueError('Integer "a" must be a multiple of 4!')
results = [b, 1, b + 1, 0]
return results[mod(b, 4)]
if __name__ == "__main__":
# print(N_seq_xor(0, 10))
# print(N_seq_xor_4k_start(0, 10))
a = -4
b_list = range(a, 16)
for b in b_list:
# y = N_seq_xor(a, b)
y = N_seq_xor_4k_start(a, b)
print(a, b, y)
if mod(b, 4) == 3:
print()
推论2证明:
在推论1的补充定义下,当
a
=
4
k
,
k
∈
Z
a=4k, k∈Z
a=4k,k∈Z且
a
≤
b
a≤b
a≤b 时,
有
m
o
d
(
b
,
4
)
=
m
o
d
(
b
−
4
k
,
4
)
=
m
o
d
(
b
−
a
,
4
)
=
p
a
c
e
,
k
∈
Z
mod(b,4)=mod(b-4k,4)=mod(b-a,4)=pace, k∈Z
mod(b,4)=mod(b−4k,4)=mod(b−a,4)=pace,k∈Z,
可记
b
=
4
k
′
+
m
o
d
(
b
,
4
)
=
4
k
′
+
p
a
c
e
,
k
′
∈
Z
b=4k'+mod(b,4)=4k'+pace, k'∈Z
b=4k′+mod(b,4)=4k′+pace,k′∈Z;
由公式(1)
f
(
4
k
,
4
k
+
3
)
=
0
,
k
∈
N
f(4k,4k+3)=0,k∈N
f(4k,4k+3)=0,k∈N及推论1,
可得
f
(
4
(
k
−
1
)
,
4
(
k
−
1
)
+
3
)
=
0
,
k
∈
Z
f(4(k-1),4(k-1)+3)=0,k∈Z
f(4(k−1),4(k−1)+3)=0,k∈Z
故
f
(
a
,
b
)
=
f
(
a
−
1
−
m
o
d
(
a
−
1
,
4
)
,
a
−
1
)
⨁
f
(
b
−
m
o
d
(
b
,
4
)
,
b
)
=
f
(
4
k
−
1
−
m
o
d
(
4
k
−
1
,
4
)
,
4
k
−
1
)
⨁
f
(
b
−
p
a
c
e
,
b
)
=
f
(
4
k
−
1
−
m
o
d
(
4
k
−
1
,
4
)
,
4
k
−
1
)
⨁
f
(
4
k
′
,
4
k
′
+
p
a
c
e
)
=
f
(
4
k
−
1
−
3
,
4
k
−
1
)
⨁
f
(
4
k
′
,
4
k
′
+
p
a
c
e
)
=
f
(
4
(
k
−
1
)
,
4
(
k
−
1
)
+
3
)
⨁
f
(
4
k
′
,
4
k
′
+
p
a
c
e
)
=
0
⨁
f
(
4
k
′
,
4
k
′
+
p
a
c
e
)
=
f
(
4
k
′
,
4
k
′
+
p
a
c
e
)
\begin{aligned} f(a,b)&=f(a-1-mod(a-1,4),a-1)⨁f(b-mod(b,4),b) \\ &=f(4k-1-mod(4k-1,4),4k-1)⨁f(b-pace,b)\\ &=f(4k-1-mod(4k-1,4),4k-1)⨁f(4k',4k'+pace)\\ &=f(4k-1-3,4k-1)⨁f(4k',4k'+pace)\\ &=f(4(k-1),4(k-1)+3)⨁f(4k',4k'+pace)\\ &=0⨁f(4k',4k'+pace)\\ &=f(4k',4k'+pace) \end{aligned}
f(a,b)=f(a−1−mod(a−1,4),a−1)⨁f(b−mod(b,4),b)=f(4k−1−mod(4k−1,4),4k−1)⨁f(b−pace,b)=f(4k−1−mod(4k−1,4),4k−1)⨁f(4k′,4k′+pace)=f(4k−1−3,4k−1)⨁f(4k′,4k′+pace)=f(4(k−1),4(k−1)+3)⨁f(4k′,4k′+pace)=0⨁f(4k′,4k′+pace)=f(4k′,4k′+pace)
当
p
a
c
e
=
0
pace=0
pace=0 时,
b
=
4
k
′
+
0
b=4k'+0
b=4k′+0,
f
(
a
,
b
)
=
f
(
4
k
′
,
4
k
′
+
0
)
=
f
(
b
,
b
)
=
b
f(a,b)=f(4k',4k'+0)=f(b,b)=b
f(a,b)=f(4k′,4k′+0)=f(b,b)=b,
当
p
a
c
e
=
1
pace=1
pace=1 时,
b
=
4
k
′
+
1
b=4k'+1
b=4k′+1,
f
(
a
,
b
)
=
f
(
4
k
′
,
4
k
′
+
1
)
=
1
f(a,b)=f(4k',4k'+1)=1
f(a,b)=f(4k′,4k′+1)=1,
当
p
a
c
e
=
2
pace=2
pace=2 时,
b
=
4
k
′
+
2
b=4k'+2
b=4k′+2,
f
(
a
,
b
)
=
f
(
4
k
′
,
4
k
′
+
2
)
=
1
⨁
(
4
k
′
+
2
)
=
4
k
′
+
3
=
b
+
1
f(a,b)=f(4k',4k'+2)=1⨁(4k'+2)=4k'+3=b+1
f(a,b)=f(4k′,4k′+2)=1⨁(4k′+2)=4k′+3=b+1,
当
p
a
c
e
=
3
pace=3
pace=3 时,
b
=
4
k
′
+
3
b=4k'+3
b=4k′+3,
f
(
a
,
b
)
=
f
(
4
k
′
,
4
k
′
+
3
)
=
(
4
k
′
+
3
)
⨁
(
4
k
′
+
3
)
=
0
f(a,b)=f(4k',4k'+3)=(4k'+3)⨁(4k'+3)=0
f(a,b)=f(4k′,4k′+3)=(4k′+3)⨁(4k′+3)=0。
得证。
3. 证明
3.1 异或性质:
- 1、交换律: a ⨁ b = b ⨁ a a⨁b=b⨁a a⨁b=b⨁a
- 2、结合律: ( a ⨁ b ) ⨁ c = a ⨁ ( b ⨁ c ) (a⨁b)⨁c=a⨁(b⨁c) (a⨁b)⨁c=a⨁(b⨁c)
- 3、基本等式:
a
⨁
a
=
0
,
a
⨁
0
=
a
,
a
⨁
b
⨁
b
=
a
a⨁a=0,a⨁0=a, a⨁b⨁b=a
a⨁a=0,a⨁0=a,a⨁b⨁b=a
其中 a , b , c ∈ N a,b,c∈N a,b,c∈N - 4、二进制分配率及推论:
设序列 a 0 , a 1 , … , a m , b 0 , b 1 , … , b n ∈ { 0 , 1 } a_0,a_1,…,a_m,b_0,b_1,…,b_n∈\{0,1\} a0,a1,…,am,b0,b1,…,bn∈{0,1},自然数 a = ( a m … a 1 a 0 ) 2 a=(a_m…a_1 a_0)_2 a=(am…a1a0)2, b = ( b n … b 1 b 0 ) 2 b=(b_n…b_1 b_0)_2 b=(bn…b1b0)2
则 a ⨁ b = ( a m … a 1 a 0 ) 2 ⨁ ( b n … b 1 b 0 ) 2 a⨁b=(a_m…a_1 a_0)_2⨁(b_n…b_1 b_0)_2 a⨁b=(am…a1a0)2⨁(bn…b1b0)2,当 m ≥ n m≥n m≥n时,有:
a ⨁ b = ( a m … a n … a 1 a 0 ) 2 ⨁ ( b n … b 1 b 0 ) 2 = [ v a l ( a m ⨁ 0 ) … v a l ( a n + 1 ⨁ 0 ) v a l ( a n ⨁ b n ) … v a l ( a 1 ⨁ b 1 ) v a l ( a 0 ⨁ b 0 ) ] 2 a⨁b=(a_m…a_n…a_1 a_0 )_2⨁(b_n…b_1 b_0 )_2 \\ =[val(a_m⨁0)…val(a_{n+1}⨁0)val(a_n⨁b_n )…val(a_1⨁b_1 )val(a_0⨁b_0)]_2 a⨁b=(am…an…a1a0)2⨁(bn…b1b0)2=[val(am⨁0)…val(an+1⨁0)val(an⨁bn)…val(a1⨁b1)val(a0⨁b0)]2
其中 v a l ( a n ⨁ b n ) val(a_n⨁b_n) val(an⨁bn)是 a n ⨁ b n a_n⨁b_n an⨁bn的值,将值赋给第 n n n位。
令 b n + 1 , b n + 2 … , b m = 0 b_{n+1},b_{n+2}…,b_m=0 bn+1,bn+2…,bm=0则可简化为:
a ⨁ b = [ v a l ( a m ⨁ b m ) … v a l ( a 1 ⨁ b 1 ) v a l ( a 0 ⨁ b 0 ) ] 2 a⨁b=[val(a_m⨁b_m)…val(a_1⨁b_1)val(a_0⨁b_0)]_2 a⨁b=[val(am⨁bm)…val(a1⨁b1)val(a0⨁b0)]2
转为十进制:
a ⨁ b = [ v a l ( a m ⨁ b m ) … v a l ( a 1 ⨁ b 1 ) v a l ( a 0 ⨁ b 0 ) ] 2 = v a l ( a m ⨁ b m ) ∗ 2 m + ⋯ + v a l ( a 1 ⨁ b 1 ) ∗ 2 1 + v a l ( a 0 ⨁ b 0 ) ∗ 2 0 = ∑ i = 0 m v a l ( a i ⨁ b i ) ∗ 2 i a⨁b=[val(a_m⨁b_m )…val(a_1⨁b_1 )val(a_0⨁b_0 )]_2\\ =val(a_m⨁b_m )*2^m+⋯+val(a_1⨁b_1 )*2^1+val(a_0⨁b_0 )*2^0\\ =∑_{i=0}^m val(a_i⨁b_i )*2^i a⨁b=[val(am⨁bm)…val(a1⨁b1)val(a0⨁b0)]2=val(am⨁bm)∗2m+⋯+val(a1⨁b1)∗21+val(a0⨁b0)∗20=i=0∑mval(ai⨁bi)∗2i
当 m < n m<n m<n时同理有: a ⨁ b = ∑ i = 0 n v a l ( a i ⨁ b i ) ∗ 2 i a⨁b=∑_{i=0}^n val(a_i⨁b_i )*2^i a⨁b=∑i=0nval(ai⨁bi)∗2i
综上:
a ⨁ b = ∑ i = 0 max ( m , n ) v a l ( a i ⨁ b i ) ∗ 2 i a⨁b=∑_{i=0}^{\max(m,n)} val(a_i⨁b_i )*2^i a⨁b=i=0∑max(m,n)val(ai⨁bi)∗2i
以十进制自然数 x x x为例,其转二进制公式为:
x = ∑ i = 0 k m o d i + 1 ( x , 2 ) ∗ 2 i = [ m o d k + 1 ( x , 2 ) … m o d 2 ( x , 2 ) m o d 1 ( x , 2 ) ] 2 x=∑_{i=0}^k mod_{i+1} (x,2)*2^i\\ =[mod_{k+1} (x,2)…mod_2 (x,2) mod_1 (x,2)]_2 x=i=0∑kmodi+1(x,2)∗2i=[modk+1(x,2)…mod2(x,2)mod1(x,2)]2
其中 k = ⌊ l o g 2 x ⌋ , m o d i + 1 ( x , 2 ) k=⌊log_2x ⌋, mod_{i+1} (x,2) k=⌊log2x⌋,modi+1(x,2)表示 x x x除 2 2 2取余数运算第 i + 1 i+1 i+1次的结果,即 x x x的二进制表示中相应位的值, 2 i 2^i 2i则是相应位的进率。
a ⨁ b = ( ∑ i = 0 k a m o d i + 1 ( a , 2 ) ∗ 2 i ) ⨁ ( ∑ i = 0 k b m o d i + 1 ( b , 2 ) ∗ 2 i ) = [ m o d k a + 1 ( a , 2 ) … m o d 2 ( a , 2 ) m o d 1 ( a , 2 ) ] 2 ⨁ [ m o d k b + 1 ( b , 2 ) … m o d 2 ( b , 2 ) m o d 1 ( b , 2 ) ] 2 = ∑ i = 0 max ( k a , k b ) v a l [ m o d i + 1 ( a , 2 ) ⨁ m o d i + 1 ( b , 2 ) ] ∗ 2 i a⨁b=(∑_{i=0}^{k_a} mod_{i+1} (a,2)*2^i )⨁(∑_{i=0}^{k_b} mod_{i+1} (b,2)*2^i)\\ =[mod_{k_a+1} (a,2)…mod_2 (a,2) mod_1 (a,2)]_2⨁[mod_{k_b+1} (b,2)…mod_2 (b,2) mod_1 (b,2)]_2\\ =∑_{i=0}^{\max(k_a,k_b)} val[mod_{i+1} (a,2)⨁mod_{i+1} (b,2)]*2^i a⨁b=(i=0∑kamodi+1(a,2)∗2i)⨁(i=0∑kbmodi+1(b,2)∗2i)=[modka+1(a,2)…mod2(a,2)mod1(a,2)]2⨁[modkb+1(b,2)…mod2(b,2)mod1(b,2)]2=i=0∑max(ka,kb)val[modi+1(a,2)⨁modi+1(b,2)]∗2i
其中 k a = ⌊ l o g 2 a ⌋ , k b = ⌊ l o g 2 b ⌋ k_a=⌊log_2a ⌋,k_b=⌊log_2b ⌋ ka=⌊log2a⌋,kb=⌊log2b⌋。
3.2 连续自然数的异或
异或可看作统计二进制表示中对应位状态为1的奇偶个数的运算。从图中看出如下规律:
f
(
4
k
,
4
k
+
3
)
=
0
,
k
∈
N
(1)
f(4k,4k+3)=0,k∈N \tag{1}
f(4k,4k+3)=0,k∈N(1)
显然(数学归纳法)推论为
f
(
4
k
1
,
4
k
2
+
3
)
=
0
,
k
1
,
k
2
∈
N
且
k
1
≤
k
2
f(4k_1,4k_2+3)=0,k_1,k_2∈N且k_1≤k_2
f(4k1,4k2+3)=0,k1,k2∈N且k1≤k2
于是有
f
(
0
,
b
)
=
f
(
0
,
b
−
m
o
d
(
b
,
4
)
−
1
)
⨁
f
(
b
−
m
o
d
(
b
,
4
)
,
b
)
=
0
⨁
f
(
b
−
m
o
d
(
b
,
4
)
,
b
)
=
f
(
b
−
m
o
d
(
b
,
4
)
,
b
)
f(0,b)=f(0,b-mod(b,4)-1)⨁f(b-mod(b,4),b)\\ =0⨁f(b-mod(b,4),b)\\ =f(b-mod(b,4),b)
f(0,b)=f(0,b−mod(b,4)−1)⨁f(b−mod(b,4),b)=0⨁f(b−mod(b,4),b)=f(b−mod(b,4),b)
其中
b
∈
N
且
b
≥
4
b∈N且b≥4
b∈N且b≥4。注意自然数
b
−
m
o
d
(
b
,
4
)
b-mod(b,4)
b−mod(b,4)是
4
4
4的倍数,即
b
−
m
o
d
(
b
,
4
)
∈
{
x
∣
x
=
4
k
,
k
∈
N
}
b-mod(b,4)∈\{x|x=4k,k∈N\}
b−mod(b,4)∈{x∣x=4k,k∈N}。
当
b
∈
[
0
,
3
]
b∈[0,3]
b∈[0,3]时,可得
b
−
m
o
d
(
b
,
4
)
=
0
b-mod(b,4)=0
b−mod(b,4)=0:而
f
(
0
,
b
)
=
f
(
b
−
m
o
d
(
b
,
4
)
,
b
)
f(0,b)=f(b-mod(b,4),b)
f(0,b)=f(b−mod(b,4),b)仍然成立。
综上:
f
(
0
,
b
)
=
f
(
b
−
m
o
d
(
b
,
4
)
,
b
)
,
b
∈
N
f(0,b)=f(b-mod(b,4),b),b∈N
f(0,b)=f(b−mod(b,4),b),b∈N
最终求出
f
(
a
,
b
)
=
f
(
0
,
a
−
1
)
⨁
f
(
0
,
a
−
1
)
⨁
f
(
a
,
b
)
=
f
(
0
,
a
−
1
)
⨁
f
(
0
,
b
)
=
f
(
a
−
1
−
m
o
d
(
a
−
1
,
4
)
,
a
−
1
)
⨁
f
(
b
−
m
o
d
(
b
,
4
)
,
b
)
f(a,b)=f(0,a-1)⨁f(0,a-1)⨁f(a,b)\\ =f(0,a-1)⨁f(0,b)\\ =f(a-1-mod(a-1,4),a-1)⨁f(b-mod(b,4),b)
f(a,b)=f(0,a−1)⨁f(0,a−1)⨁f(a,b)=f(0,a−1)⨁f(0,b)=f(a−1−mod(a−1,4),a−1)⨁f(b−mod(b,4),b)
最坏时间复杂度为7次异或。
注意事项:
f
(
4
k
,
4
k
−
3
)
f(4k,4k-3)
f(4k,4k−3)中的
4
k
4k
4k是
4
4
4的倍数,此函数本身并不是周期函数,而是在震荡特性上类似于函数
y
=
x
s
i
n
(
π
/
2
∗
x
)
y=xsin(\pi/2*x)
y=xsin(π/2∗x),只是存在一个特殊的周期序列。
本文到此已基本结束,有兴趣的可以继续看下文的证明,仅作参考,如有错误恳请指正。
附:
证
(
1
)
(1)
(1):
当
k
=
0
k=0
k=0时:
f
(
4
k
,
4
k
−
3
)
=
f
(
0
,
3
)
=
0
⨁
1
⨁
2
⨁
3
=
(
00
)
2
⨁
(
01
)
2
⨁
(
10
)
2
⨁
(
11
)
2
=
(
00
)
2
=
0
f(4k,4k-3)=f(0,3)\\ =0⨁1⨁2⨁3\\ =(00)_2⨁(01)_2⨁(10)_2⨁(11)_2\\ =(00)_2=0
f(4k,4k−3)=f(0,3)=0⨁1⨁2⨁3=(00)2⨁(01)2⨁(10)2⨁(11)2=(00)2=0
当
k
∈
N
+
k∈N^+
k∈N+时:
f
(
4
k
,
4
k
−
3
)
=
4
k
⨁
(
4
k
+
1
)
⨁
(
4
k
+
2
)
⨁
(
4
k
+
3
)
=
∑
i
=
0
⌊
l
o
g
2
(
4
k
+
3
)
⌋
v
a
l
[
m
o
d
i
+
1
(
4
k
,
2
)
⨁
m
o
d
i
+
1
(
4
k
+
1
,
2
)
⨁
m
o
d
i
+
1
(
4
k
+
2
,
2
)
⨁
m
o
d
i
+
1
(
4
k
+
3
,
2
)
]
∗
2
i
=
∑
i
=
2
⌊
l
o
g
2
(
4
k
+
3
)
⌋
v
a
l
[
m
o
d
i
+
1
(
4
k
,
2
)
⨁
m
o
d
i
+
1
(
4
k
+
1
,
2
)
⨁
m
o
d
i
+
1
(
4
k
+
2
,
2
)
⨁
m
o
d
i
+
1
(
4
k
+
3
,
2
)
]
∗
2
i
+
v
a
l
[
m
o
d
2
(
4
k
,
2
)
⨁
m
o
d
2
(
4
k
+
1
,
2
)
⨁
m
o
d
2
(
4
k
+
2
,
2
)
⨁
m
o
d
2
(
4
k
+
3
,
2
)
]
∗
2
1
+
v
a
l
[
m
o
d
1
(
4
k
,
2
)
⨁
m
o
d
1
(
4
k
+
1
,
2
)
⨁
m
o
d
1
(
4
k
+
2
,
2
)
⨁
m
o
d
1
(
4
k
+
3
,
2
)
]
∗
2
0
f(4k,4k-3)=4k⨁(4k+1)⨁(4k+2)⨁(4k+3)\\ =∑_{i=0}^{⌊log_2 (4k+3) ⌋} val[mod_{i+1} (4k,2)⨁mod_{i+1} (4k+1,2)⨁mod_{i+1}(4k+2,2)⨁mod_{i+1} (4k+3,2)]*2^i \\ =∑_{i=2}^{⌊log_2 (4k+3)⌋} val[mod_{i+1} (4k,2)⨁mod_{i+1} (4k+1,2)⨁mod_{i+1} (4k+2,2)⨁mod_{i+1} (4k+3,2)]*2^i \\ +val[mod_2 (4k,2)⨁mod_2 (4k+1,2)⨁mod_2 (4k+2,2)⨁mod_2 (4k+3,2)]*2^1\\ +val[mod_1 (4k,2)⨁mod_1 (4k+1,2)⨁mod_1 (4k+2,2)⨁mod_1 (4k+3,2)]*2^0
f(4k,4k−3)=4k⨁(4k+1)⨁(4k+2)⨁(4k+3)=i=0∑⌊log2(4k+3)⌋val[modi+1(4k,2)⨁modi+1(4k+1,2)⨁modi+1(4k+2,2)⨁modi+1(4k+3,2)]∗2i=i=2∑⌊log2(4k+3)⌋val[modi+1(4k,2)⨁modi+1(4k+1,2)⨁modi+1(4k+2,2)⨁modi+1(4k+3,2)]∗2i+val[mod2(4k,2)⨁mod2(4k+1,2)⨁mod2(4k+2,2)⨁mod2(4k+3,2)]∗21+val[mod1(4k,2)⨁mod1(4k+1,2)⨁mod1(4k+2,2)⨁mod1(4k+3,2)]∗20
当
i
=
0
i=0
i=0时:
m
o
d
1
(
4
k
,
2
)
⨁
m
o
d
1
(
4
k
+
1
,
2
)
⨁
m
o
d
1
(
4
k
+
2
,
2
)
⨁
m
o
d
1
(
4
k
+
3
,
2
)
=
0
⨁
1
⨁
0
⨁
1
=
0
mod_1 (4k,2)⨁mod_1 (4k+1,2)⨁mod_1 (4k+2,2)⨁mod_1 (4k+3,2)=0⨁1⨁0⨁1=0
mod1(4k,2)⨁mod1(4k+1,2)⨁mod1(4k+2,2)⨁mod1(4k+3,2)=0⨁1⨁0⨁1=0
当
i
=
1
i=1
i=1时:
m
o
d
2
(
4
k
,
2
)
⨁
m
o
d
2
(
4
k
+
1
,
2
)
⨁
m
o
d
2
(
4
k
+
2
,
2
)
⨁
m
o
d
2
(
4
k
+
3
,
2
)
=
0
⨁
0
⨁
1
⨁
1
=
0
mod_2 (4k,2)⨁mod_2 (4k+1,2)⨁mod_2 (4k+2,2)⨁mod_2 (4k+3,2)=0⨁0⨁1⨁1=0
mod2(4k,2)⨁mod2(4k+1,2)⨁mod2(4k+2,2)⨁mod2(4k+3,2)=0⨁0⨁1⨁1=0
当
i
≥
2
i≥2
i≥2时(证明附后):
⌊
l
o
g
2
4
k
⌋
=
⌊
l
o
g
2
(
4
k
+
1
)
⌋
=
⌊
l
o
g
2
(
4
k
+
2
)
⌋
=
⌊
l
o
g
2
(
4
k
+
3
)
⌋
,
k
∈
N
+
(2)
⌊log_24k ⌋=⌊log_2 (4k+1) ⌋=⌊log_2 (4k+2) ⌋=⌊log_2 (4k+3) ⌋,k∈N^+ \tag{2}
⌊log24k⌋=⌊log2(4k+1)⌋=⌊log2(4k+2)⌋=⌊log2(4k+3)⌋,k∈N+(2)
m
o
d
i
+
1
(
4
k
,
2
)
=
m
o
d
i
+
1
(
4
k
+
1
,
2
)
=
m
o
d
i
+
1
(
4
k
+
2
,
2
)
=
m
o
d
i
+
1
(
4
k
+
3
,
2
)
,
k
∈
N
+
,
i
≥
2
(3)
mod_{i+1} (4k,2)=mod_{i+1} (4k+1,2)=mod_{i+1} (4k+2,2)=mod_{i+1} (4k+3,2),\\ k∈N^+,i≥2 \tag{3}
modi+1(4k,2)=modi+1(4k+1,2)=modi+1(4k+2,2)=modi+1(4k+3,2),k∈N+,i≥2(3)
故:
f
(
4
k
,
4
k
−
3
)
=
{
∑
i
=
2
⌊
l
o
g
2
(
4
k
+
3
)
⌋
v
a
l
[
m
o
d
i
+
1
(
4
k
,
2
)
⨁
m
o
d
i
+
1
(
4
k
+
1
,
2
)
⨁
m
o
d
i
+
1
(
4
k
+
2
,
2
)
⨁
m
o
d
i
+
1
(
4
k
+
3
,
2
)
]
∗
2
i
}
+
v
a
l
[
0
⨁
0
⨁
1
⨁
1
]
∗
2
1
+
v
a
l
[
0
⨁
1
⨁
0
⨁
1
]
∗
2
0
=
{
∑
i
=
2
⌊
l
o
g
2
(
4
k
+
3
)
⌋
v
a
l
[
m
o
d
i
+
1
(
4
k
,
2
)
⨁
m
o
d
i
+
1
(
4
k
,
2
)
⨁
m
o
d
i
+
1
(
4
k
,
2
)
⨁
m
o
d
i
+
1
(
4
k
,
2
)
]
∗
2
i
}
+
v
a
l
[
0
⨁
0
⨁
1
⨁
1
]
∗
2
1
+
v
a
l
[
0
⨁
1
⨁
0
⨁
1
]
∗
2
0
=
[
∑
i
=
2
⌊
l
o
g
2
(
4
k
+
3
)
⌋
0
∗
2
i
]
+
0
∗
2
1
+
0
∗
2
0
=
0
\begin{aligned} f(4k,4k-3)&=\{∑_{i=2}^{⌊log_2 (4k+3)⌋} val[mod_{i+1} (4k,2)⨁mod_{i+1} (4k+1,2)⨁mod_{i+1} (4k+2,2)⨁mod_{i+1} (4k+3,2)]*2^i \} + \\ &val[0⨁0⨁1⨁1]*2^1+ val[0⨁1⨁0⨁1]*2^0 \\ &=\{∑_{i=2}^{⌊log_2 (4k+3)⌋} val[mod_{i+1} (4k,2)⨁mod_{i+1} (4k,2)⨁mod_{i+1} (4k,2)⨁mod_{i+1} (4k,2)]*2^i \} + \\ &val[0⨁0⨁1⨁1]*2^1+ val[0⨁1⨁0⨁1]*2^0 \\ &=[∑_{i=2}^{⌊log_2 (4k+3) ⌋} 0*2^i]+0*2^1+0*2^0 \\ &=0 \end{aligned}
f(4k,4k−3)={i=2∑⌊log2(4k+3)⌋val[modi+1(4k,2)⨁modi+1(4k+1,2)⨁modi+1(4k+2,2)⨁modi+1(4k+3,2)]∗2i}+val[0⨁0⨁1⨁1]∗21+val[0⨁1⨁0⨁1]∗20={i=2∑⌊log2(4k+3)⌋val[modi+1(4k,2)⨁modi+1(4k,2)⨁modi+1(4k,2)⨁modi+1(4k,2)]∗2i}+val[0⨁0⨁1⨁1]∗21+val[0⨁1⨁0⨁1]∗20=[i=2∑⌊log2(4k+3)⌋0∗2i]+0∗21+0∗20=0
综上:
f
(
4
k
,
4
k
−
3
)
=
0
,
k
∈
N
f(4k,4k-3)=0,k∈N
f(4k,4k−3)=0,k∈N
证毕。
证
(
2
)
(2)
(2):
k
∈
N
+
⌊
l
o
g
2
k
⌋
,
⌊
l
o
g
2
k
⌋
+
1
∈
N
2
⌊
l
o
g
2
k
⌋
,
2
⌊
l
o
g
2
k
⌋
+
1
∈
N
k∈N^+ \\ ⌊log_2k ⌋,⌊log_2k ⌋+1∈N \\ 2^{⌊log_2k⌋} ,2^{⌊log_2k⌋+1}∈N
k∈N+⌊log2k⌋,⌊log2k⌋+1∈N2⌊log2k⌋,2⌊log2k⌋+1∈N
根据下取整定义:
⌊
l
o
g
2
k
⌋
≤
l
o
g
2
k
<
⌊
l
o
g
2
k
⌋
+
1
2
⌊
l
o
g
2
k
⌋
≤
k
<
2
⌊
l
o
g
2
k
⌋
+
1
⌊log_2k ⌋≤log_2k<⌊log_2k ⌋+1 \\ 2^{⌊log_2k ⌋} ≤k<2^{⌊log_2k ⌋+1} \\
⌊log2k⌋≤log2k<⌊log2k⌋+12⌊log2k⌋≤k<2⌊log2k⌋+1
又
k
,
2
⌊
l
o
g
2
k
⌋
+
1
∈
N
k,2^{⌊log_2k ⌋+1}∈N
k,2⌊log2k⌋+1∈N:
2
⌊
l
o
g
2
k
⌋
≤
k
<
k
+
1
≤
2
⌊
l
o
g
2
k
⌋
+
1
2^{⌊log_2k ⌋} ≤k<k+1≤2^{⌊log_2k ⌋+1}
2⌊log2k⌋≤k<k+1≤2⌊log2k⌋+1
故有:
2
⌊
l
o
g
2
k
⌋
≤
k
<
k
+
3
4
<
k
+
1
≤
2
⌊
l
o
g
2
k
⌋
+
1
⌊
l
o
g
2
k
⌋
≤
l
o
g
2
k
<
l
o
g
2
(
k
+
3
4
)
<
l
o
g
2
(
k
+
1
)
≤
⌊
l
o
g
2
k
⌋
+
1
2^{⌊log_2k ⌋} ≤k<k+\frac{3}{4}<k+1≤2^{⌊log_2k ⌋+1} \\ ⌊log_2k ⌋≤log_2 k<log_2 (k+\frac{3}{4})<log_2 (k+1)≤⌊log_2k ⌋+1
2⌊log2k⌋≤k<k+43<k+1≤2⌊log2k⌋+1⌊log2k⌋≤log2k<log2(k+43)<log2(k+1)≤⌊log2k⌋+1
即有
⌊
l
o
g
2
k
⌋
<
l
o
g
2
(
k
+
3
4
)
<
⌊
l
o
g
2
k
⌋
+
1
⌊log_2k ⌋<log_2(k+\frac{3}{4})<⌊log_2k ⌋+1
⌊log2k⌋<log2(k+43)<⌊log2k⌋+1
根据下取整的定义、单调不减性质可得:
⌊
l
o
g
2
k
⌋
≤
⌊
l
o
g
2
(
k
+
3
4
)
⌋
≤
l
o
g
2
(
k
+
3
4
)
<
⌊
l
o
g
2
k
⌋
+
1
⌊log_2k ⌋≤⌊log_2(k+\frac{3}{4}) ⌋≤log_2(k+\frac{3}{4})<⌊log_2k ⌋+1
⌊log2k⌋≤⌊log2(k+43)⌋≤log2(k+43)<⌊log2k⌋+1
又由于
⌊
l
o
g
2
k
⌋
,
⌊
l
o
g
2
(
k
+
3
4
)
⌋
∈
N
⌊log_2k ⌋, ⌊log_2(k+\frac{3}{4}) ⌋∈N
⌊log2k⌋,⌊log2(k+43)⌋∈N,故可根据上式中
⌊
l
o
g
2
(
k
+
3
4
)
⌋
<
⌊
l
o
g
2
k
⌋
+
1
⌊log_2(k+\frac{3}{4}) ⌋<⌊log_2k ⌋+1
⌊log2(k+43)⌋<⌊log2k⌋+1得
⌊
l
o
g
2
(
k
+
3
4
)
⌋
≤
(
⌊
l
o
g
2
k
⌋
+
1
)
−
1
=
⌊
l
o
g
2
k
⌋
⌊log_2 (k+\frac{3}{4}) ⌋≤(⌊log_2 k ⌋+1)-1=⌊log_2k ⌋
⌊log2(k+43)⌋≤(⌊log2k⌋+1)−1=⌊log2k⌋
综合以上两个不等式,得
⌊
l
o
g
2
k
⌋
≤
⌊
l
o
g
2
(
k
+
3
4
)
⌋
≤
⌊
l
o
g
2
k
⌋
⌊log_2k ⌋≤⌊log_2 (k+\frac{3}{4}) ⌋≤⌊log_2k ⌋
⌊log2k⌋≤⌊log2(k+43)⌋≤⌊log2k⌋
根据下取整的定义、单调不减性质,得
⌊
l
o
g
2
k
⌋
≤
⌊
l
o
g
2
(
k
+
1
4
)
⌋
≤
⌊
l
o
g
2
(
k
+
2
4
)
⌋
≤
⌊
l
o
g
2
(
k
+
3
4
)
⌋
≤
⌊
l
o
g
2
k
⌋
⌊log_2k ⌋≤⌊log_2(k+\frac{1}{4}) ⌋≤⌊log_2(k+\frac{2}{4}) ⌋≤⌊log_2(k+\frac{3}{4}) ⌋≤⌊log_2k ⌋
⌊log2k⌋≤⌊log2(k+41)⌋≤⌊log2(k+42)⌋≤⌊log2(k+43)⌋≤⌊log2k⌋
故
⌊
l
o
g
2
k
⌋
=
⌊
l
o
g
2
(
k
+
1
4
)
⌋
=
⌊
l
o
g
2
(
k
+
2
4
)
⌋
=
⌊
l
o
g
2
(
k
+
3
4
)
⌋
⌊log_2k ⌋=⌊log_2(k+\frac{1}{4}) ⌋=⌊log_2(k+\frac{2}{4}) ⌋=⌊log_2(k+\frac{3}{4}) ⌋
⌊log2k⌋=⌊log2(k+41)⌋=⌊log2(k+42)⌋=⌊log2(k+43)⌋
而
⌊
l
o
g
2
(
4
k
+
3
)
⌋
=
⌊
l
o
g
2
4
(
k
+
3
4
)
⌋
=
⌊
2
+
l
o
g
2
(
k
+
3
4
)
⌋
=
2
+
⌊
l
o
g
2
(
k
+
3
4
)
⌋
=
2
+
⌊
l
o
g
2
k
⌋
=
⌊
2
+
l
o
g
2
k
⌋
=
⌊
l
o
g
2
4
k
⌋
⌊log_2 (4k+3) ⌋=⌊log_2 4(k+\frac{3}{4}) ⌋=⌊2+log_2 (k+\frac{3}{4}) ⌋=2+⌊log_2 (k+\frac{3}{4}) ⌋ \\ =2+⌊log_2k ⌋=⌊2+log_2 k ⌋=⌊log_2 4k ⌋
⌊log2(4k+3)⌋=⌊log24(k+43)⌋=⌊2+log2(k+43)⌋=2+⌊log2(k+43)⌋=2+⌊log2k⌋=⌊2+log2k⌋=⌊log24k⌋
同理可证:
⌊
l
o
g
2
(
4
k
+
2
)
⌋
=
⌊
l
o
g
2
4
k
⌋
⌊
l
o
g
2
(
4
k
+
1
)
⌋
=
⌊
l
o
g
2
4
k
⌋
⌊log_2 (4k+2) ⌋=⌊log_24k ⌋ \\ ⌊log_2 (4k+1) ⌋=⌊log_24k ⌋
⌊log2(4k+2)⌋=⌊log24k⌋⌊log2(4k+1)⌋=⌊log24k⌋
故
⌊
l
o
g
2
4
k
⌋
=
⌊
l
o
g
2
(
4
k
+
1
)
⌋
=
⌊
l
o
g
2
(
4
k
+
2
)
⌋
=
⌊
l
o
g
2
(
4
k
+
3
)
⌋
,
k
∈
N
+
⌊log_24k ⌋=⌊log_2 (4k+1) ⌋=⌊log_2 (4k+2) ⌋=⌊log_2 (4k+3) ⌋,k∈N^+
⌊log24k⌋=⌊log2(4k+1)⌋=⌊log2(4k+2)⌋=⌊log2(4k+3)⌋,k∈N+
证毕。
证
(
3
)
(3)
(3):
已知
k
∈
N
+
,
i
≥
2
k∈N^+,i≥2
k∈N+,i≥2。
将
4
k
4k
4k用二进制展开:
4
k
=
[
m
o
d
⌊
l
o
g
2
4
k
⌋
+
1
(
4
k
,
2
)
…
m
o
d
3
(
4
k
,
2
)
00
]
2
4k=[mod_{⌊log_24k ⌋+1} (4k,2)…mod_3 (4k,2)00]_2
4k=[mod⌊log24k⌋+1(4k,2)…mod3(4k,2)00]2
则有:
4
k
+
1
=
[
m
o
d
⌊
l
o
g
2
4
k
⌋
+
1
(
4
k
,
2
)
…
m
o
d
3
(
4
k
,
2
)
00
]
2
+
1
=
[
m
o
d
⌊
l
o
g
2
4
k
⌋
+
1
(
4
k
,
2
)
…
m
o
d
3
(
4
k
,
2
)
00
]
2
+
[
01
]
2
=
[
m
o
d
⌊
l
o
g
2
4
k
⌋
+
1
(
4
k
,
2
)
…
m
o
d
3
(
4
k
,
2
)
01
]
2
\begin{aligned} 4k+1&=[mod_{⌊log_24k ⌋+1} (4k,2)…mod_3 (4k,2)00]_2+1 \\ &=[mod_{⌊log_24k ⌋+1} (4k,2)…mod_3 (4k,2)00]_2+[01]_2 \\ &=[mod_{⌊log_24k ⌋+1} (4k,2)…mod_3 (4k,2)01]_2 \end{aligned}
4k+1=[mod⌊log24k⌋+1(4k,2)…mod3(4k,2)00]2+1=[mod⌊log24k⌋+1(4k,2)…mod3(4k,2)00]2+[01]2=[mod⌊log24k⌋+1(4k,2)…mod3(4k,2)01]2
注意最后的等号是恒等变形,未对前面的位有任何改动。
另一方面,将
4
k
+
1
4k+1
4k+1用二进制展开:
4
k
+
1
=
[
m
o
d
⌊
l
o
g
2
(
4
k
+
1
)
⌋
+
1
(
4
k
+
1
,
2
)
…
m
o
d
3
(
4
k
+
1
,
2
)
01
]
2
4k+1=[mod_{⌊log_2 (4k+1) ⌋+1} (4k+1,2)…mod_3 (4k+1,2)01]_2
4k+1=[mod⌊log2(4k+1)⌋+1(4k+1,2)…mod3(4k+1,2)01]2
又由于
(
2
)
(2)
(2)中已证明
⌊
l
o
g
2
4
k
⌋
=
⌊
l
o
g
2
(
4
k
+
1
)
⌋
=
⌊
l
o
g
2
(
4
k
+
2
)
⌋
=
⌊
l
o
g
2
(
4
k
+
3
)
⌋
⌊log_2 4k ⌋=⌊log_2 (4k+1) ⌋=⌊log_2 (4k+2)⌋=⌊log_2 (4k+3)⌋
⌊log24k⌋=⌊log2(4k+1)⌋=⌊log2(4k+2)⌋=⌊log2(4k+3)⌋
得
4
k
+
1
=
[
m
o
d
⌊
l
o
g
2
4
k
⌋
+
1
(
4
k
+
1
,
2
)
…
m
o
d
3
(
4
k
+
1
,
2
)
01
]
2
4k+1=[mod_{⌊log_24k ⌋+1} (4k+1,2)…mod_3 (4k+1,2)01]_2
4k+1=[mod⌊log24k⌋+1(4k+1,2)…mod3(4k+1,2)01]2
即
[
m
o
d
⌊
l
o
g
2
4
k
⌋
+
1
(
4
k
,
2
)
…
m
o
d
3
(
4
k
,
2
)
01
]
2
=
[
m
o
d
⌊
l
o
g
2
4
k
⌋
+
1
(
4
k
+
1
,
2
)
…
m
o
d
3
(
4
k
+
1
,
2
)
01
]
2
[mod_{⌊log_24k ⌋+1} (4k,2)…mod_3 (4k,2)01]_2 \\ =[mod_{⌊log_24k ⌋+1} (4k+1,2)…mod_3 (4k+1,2)01]_2
[mod⌊log24k⌋+1(4k,2)…mod3(4k,2)01]2=[mod⌊log24k⌋+1(4k+1,2)…mod3(4k+1,2)01]2
于是有
m
o
d
i
+
1
(
4
k
,
2
)
=
m
o
d
i
+
1
(
4
k
+
1
,
2
)
mod_{i+1} (4k,2)=mod_{i+1} (4k+1,2)
modi+1(4k,2)=modi+1(4k+1,2)
同理可证:
m
o
d
i
+
1
(
4
k
,
2
)
=
m
o
d
i
+
1
(
4
k
+
2
,
2
)
m
o
d
i
+
1
(
4
k
,
2
)
=
m
o
d
i
+
1
(
4
k
+
3
,
2
)
mod_{i+1} (4k,2)=mod_{i+1} (4k+2,2) \\ mod_{i+1} (4k,2)=mod_{i+1} (4k+3,2)
modi+1(4k,2)=modi+1(4k+2,2)modi+1(4k,2)=modi+1(4k+3,2)
综上:
m
o
d
i
+
1
(
4
k
,
2
)
=
m
o
d
i
+
1
(
4
k
+
1
,
2
)
=
m
o
d
i
+
1
(
4
k
+
2
,
2
)
=
m
o
d
i
+
1
(
4
k
+
3
,
2
)
,
k
∈
N
+
,
i
≥
2
mod_{i+1} (4k,2)=mod_{i+1} (4k+1,2)=mod_{i+1} (4k+2,2)=mod_{i+1} (4k+3,2),\\ k∈N^+,i≥2
modi+1(4k,2)=modi+1(4k+1,2)=modi+1(4k+2,2)=modi+1(4k+3,2),k∈N+,i≥2
证毕。