背景
- 最近看到用异或找出连续自然数中某一值重复1次/缺失的问题(出现奇偶次不同作为查找特征的问题),针对其中与高斯求和法相类比的连续自然数(或连续整数)值求异或法,给出一种快速求法,最坏时间复杂度为7次异或。
1. 预定义
- 定义域:NNN
- 基本运算:异或符号记作⨁⨁⨁,真值表:
- 对应法则:记f(a,b)=⨁i=abi=a⨁(a+1)⨁…⨁b,a<b且a,b∈Nf(a,b)=⨁_{i=a}^b i=a⨁(a+1) ⨁…⨁b,a<b且a,b∈Nf(a,b)=⨁i=abi=a⨁(a+1)⨁…⨁b,a<b且a,b∈N。
- 规定:异或是双目运算符,当b=ab=ab=a时,特别规定f(a,b)=f(a,a)=af(a,b)=f(a,a)=af(a,b)=f(a,a)=a,表示未参与异或运算。
2. 结论
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
f(a,b)=f(a−1−mod(a−1,4),a−1)⨁f(b−mod(b,4),b),其中a,b∈N,a≤b
其中modmodmod为取余运算。
- 代码示例:(示例代码的适用范围已从连续自然数扩展为连续整数,见推论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:以000与除数yyy构成的半开区间为模除的值域(即[0,y)[0,y)[0,y)和(−y,0](-y,0](−y,0],y∈N+y∈N^+y∈N+),补充modmodmod定义
mod(−x,y)=−mod(x,y)+y,mod(x,−y)=mod(x,y)−y,mod(−x,−y)=−mod(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−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 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=4k,k∈Za=4k, k∈Za=4k,k∈Z且b∈Z,a≤bb∈Z, a≤bb∈Z,a≤b时,mod(a,4)=0mod(a,4)=0mod(a,4)=0,
记pace=mod(b−a,4)pace=mod(b-a,4)pace=mod(b−a,4),则有
pacepacepace | f(a,b)f(a,b)f(a,b) |
---|---|
000 | bbb |
111 | 111 |
222 | b+1b+1b+1 |
333 | 000 |
- 代码示例:(示例代码的适用范围已从连续自然数扩展为连续整数,见推论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=4k,k∈Za=4k, k∈Za=4k,k∈Z且a≤ba≤ba≤b 时,
有 mod(b,4)=mod(b−4k,4)=mod(b−a,4)=pace,k∈Zmod(b,4)=mod(b-4k,4)=mod(b-a,4)=pace, k∈Zmod(b,4)=mod(b−4k,4)=mod(b−a,4)=pace,k∈Z,
可记 b=4k′+mod(b,4)=4k′+pace,k′∈Zb=4k'+mod(b,4)=4k'+pace, k'∈Zb=4k′+mod(b,4)=4k′+pace,k′∈Z;
由公式(1)f(4k,4k+3)=0,k∈Nf(4k,4k+3)=0,k∈Nf(4k,4k+3)=0,k∈N及推论1,
可得 f(4(k−1),4(k−1)+3)=0,k∈Zf(4(k-1),4(k-1)+3)=0,k∈Zf(4(k−1),4(k−1)+3)=0,k∈Z
故
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)
\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)
当 pace=0pace=0pace=0 时,b=4k′+0b=4k'+0b=4k′+0, f(a,b)=f(4k′,4k′+0)=f(b,b)=bf(a,b)=f(4k',4k'+0)=f(b,b)=bf(a,b)=f(4k′,4k′+0)=f(b,b)=b,
当 pace=1pace=1pace=1 时,b=4k′+1b=4k'+1b=4k′+1, f(a,b)=f(4k′,4k′+1)=1f(a,b)=f(4k',4k'+1)=1f(a,b)=f(4k′,4k′+1)=1,
当 pace=2pace=2pace=2 时,b=4k′+2b=4k'+2b=4k′+2, f(a,b)=f(4k′,4k′+2)=1⨁(4k′+2)=4k′+3=b+1f(a,b)=f(4k',4k'+2)=1⨁(4k'+2)=4k'+3=b+1f(a,b)=f(4k′,4k′+2)=1⨁(4k′+2)=4k′+3=b+1,
当 pace=3pace=3pace=3 时,b=4k′+3b=4k'+3b=4k′+3, f(a,b)=f(4k′,4k′+3)=(4k′+3)⨁(4k′+3)=0f(a,b)=f(4k',4k'+3)=(4k'+3)⨁(4k'+3)=0f(a,b)=f(4k′,4k′+3)=(4k′+3)⨁(4k′+3)=0。
得证。
3. 证明
3.1 异或性质:
- 1、交换律:a⨁b=b⨁aa⨁b=b⨁aa⨁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=aa⨁a=0,a⨁0=a, a⨁b⨁b=aa⨁a=0,a⨁0=a,a⨁b⨁b=a
其中a,b,c∈Na,b,c∈Na,b,c∈N - 4、二进制分配率及推论:
设序列a0,a1,…,am,b0,b1,…,bn∈{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=(am…a1a0)2a=(a_m…a_1 a_0)_2a=(am…a1a0)2,b=(bn…b1b0)2b=(b_n…b_1 b_0)_2b=(bn…b1b0)2
则a⨁b=(am…a1a0)2⨁(bn…b1b0)2a⨁b=(a_m…a_1 a_0)_2⨁(b_n…b_1 b_0)_2a⨁b=(am…a1a0)2⨁(bn…b1b0)2,当m≥nm≥nm≥n时,有:
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 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
其中val(an⨁bn)val(a_n⨁b_n)val(an⨁bn)是an⨁bna_n⨁b_nan⨁bn的值,将值赋给第nnn位。
令bn+1,bn+2…,bm=0b_{n+1},b_{n+2}…,b_m=0bn+1,bn+2…,bm=0则可简化为:
a⨁b=[val(am⨁bm)…val(a1⨁b1)val(a0⨁b0)]2a⨁b=[val(a_m⨁b_m)…val(a_1⨁b_1)val(a_0⨁b_0)]_2a⨁b=[val(am⨁bm)…val(a1⨁b1)val(a0⨁b0)]2
转为十进制:
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=0mval(ai⨁bi)∗2i 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<nm<nm<n时同理有:a⨁b=∑i=0nval(ai⨁bi)∗2ia⨁b=∑_{i=0}^n val(a_i⨁b_i )*2^ia⨁b=∑i=0nval(ai⨁bi)∗2i
综上:
a⨁b=∑i=0max(m,n)val(ai⨁bi)∗2ia⨁b=∑_{i=0}^{\max(m,n)} val(a_i⨁b_i )*2^ia⨁b=i=0∑max(m,n)val(ai⨁bi)∗2i
以十进制自然数xxx为例,其转二进制公式为:
x=∑i=0kmodi+1(x,2)∗2i=[modk+1(x,2)…mod2(x,2)mod1(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=⌊log2x⌋,modi+1(x,2)k=⌊log_2x ⌋, mod_{i+1} (x,2)k=⌊log2x⌋,modi+1(x,2)表示 xxx除222取余数运算第i+1i+1i+1次的结果,即xxx的二进制表示中相应位的值,2i2^i2i则是相应位的进率。
a⨁b=(∑i=0kamodi+1(a,2)∗2i)⨁(∑i=0kbmodi+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=0max(ka,kb)val[modi+1(a,2)⨁modi+1(b,2)]∗2i 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
其中ka=⌊log2a⌋,kb=⌊log2b⌋k_a=⌊log_2a ⌋,k_b=⌊log_2b ⌋ka=⌊log2a⌋,kb=⌊log2b⌋。
3.2 连续自然数的异或
异或可看作统计二进制表示中对应位状态为1的奇偶个数的运算。从图中看出如下规律:
f(4k,4k+3)=0,k∈N(1)f(4k,4k+3)=0,k∈N \tag{1}f(4k,4k+3)=0,k∈N(1)
显然(数学归纳法)推论为
f(4k1,4k2+3)=0,k1,k2∈N且k1≤k2f(4k_1,4k_2+3)=0,k_1,k_2∈N且k_1≤k_2f(4k1,4k2+3)=0,k1,k2∈N且k1≤k2
于是有
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)
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≥4b∈N且b≥4b∈N且b≥4。注意自然数b−mod(b,4)b-mod(b,4)b−mod(b,4)是444的倍数,即b−mod(b,4)∈{x∣x=4k,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−mod(b,4)=0b-mod(b,4)=0b−mod(b,4)=0:而f(0,b)=f(b−mod(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−mod(b,4),b),b∈Nf(0,b)=f(b-mod(b,4),b),b∈Nf(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−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)
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(4k,4k−3)f(4k,4k-3)f(4k,4k−3)中的4k4k4k是444的倍数,此函数本身并不是周期函数,而是在震荡特性上类似于函数y=xsin(π/2∗x)y=xsin(\pi/2*x)y=xsin(π/2∗x),只是存在一个特殊的周期序列。
本文到此已基本结束,有兴趣的可以继续看下文的证明,仅作参考,如有错误恳请指正。
附:
证(1)(1)(1):
当k=0k=0k=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
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(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
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=0i=0i=0时:
mod1(4k,2)⨁mod1(4k+1,2)⨁mod1(4k+2,2)⨁mod1(4k+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=1i=1i=1时:
mod2(4k,2)⨁mod2(4k+1,2)⨁mod2(4k+2,2)⨁mod2(4k+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≥2i≥2i≥2时(证明附后):
⌊log24k⌋=⌊log2(4k+1)⌋=⌊log2(4k+2)⌋=⌊log2(4k+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)
modi+1(4k,2)=modi+1(4k+1,2)=modi+1(4k+2,2)=modi+1(4k+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(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
\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(4k,4k−3)=0,k∈Nf(4k,4k-3)=0,k∈Nf(4k,4k−3)=0,k∈N
证毕。
证(2)(2)(2):
k∈N+⌊log2k⌋,⌊log2k⌋+1∈N2⌊log2k⌋,2⌊log2k⌋+1∈Nk∈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
根据下取整定义:
⌊log2k⌋≤log2k<⌊log2k⌋+12⌊log2k⌋≤k<2⌊log2k⌋+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⌊log2k⌋+1∈Nk,2^{⌊log_2k ⌋+1}∈Nk,2⌊log2k⌋+1∈N:
2⌊log2k⌋≤k<k+1≤2⌊log2k⌋+12^{⌊log_2k ⌋} ≤k<k+1≤2^{⌊log_2k ⌋+1}2⌊log2k⌋≤k<k+1≤2⌊log2k⌋+1
故有:
2⌊log2k⌋≤k<k+34<k+1≤2⌊log2k⌋+1⌊log2k⌋≤log2k<log2(k+34)<log2(k+1)≤⌊log2k⌋+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
即有
⌊log2k⌋<log2(k+34)<⌊log2k⌋+1⌊log_2k ⌋<log_2(k+\frac{3}{4})<⌊log_2k ⌋+1⌊log2k⌋<log2(k+43)<⌊log2k⌋+1
根据下取整的定义、单调不减性质可得:
⌊log2k⌋≤⌊log2(k+34)⌋≤log2(k+34)<⌊log2k⌋+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
又由于⌊log2k⌋,⌊log2(k+34)⌋∈N⌊log_2k ⌋, ⌊log_2(k+\frac{3}{4}) ⌋∈N⌊log2k⌋,⌊log2(k+43)⌋∈N,故可根据上式中⌊log2(k+34)⌋<⌊log2k⌋+1⌊log_2(k+\frac{3}{4}) ⌋<⌊log_2k ⌋+1⌊log2(k+43)⌋<⌊log2k⌋+1得
⌊log2(k+34)⌋≤(⌊log2k⌋+1)−1=⌊log2k⌋⌊log_2 (k+\frac{3}{4}) ⌋≤(⌊log_2 k ⌋+1)-1=⌊log_2k ⌋⌊log2(k+43)⌋≤(⌊log2k⌋+1)−1=⌊log2k⌋
综合以上两个不等式,得
⌊log2k⌋≤⌊log2(k+34)⌋≤⌊log2k⌋⌊log_2k ⌋≤⌊log_2 (k+\frac{3}{4}) ⌋≤⌊log_2k ⌋⌊log2k⌋≤⌊log2(k+43)⌋≤⌊log2k⌋
根据下取整的定义、单调不减性质,得
⌊log2k⌋≤⌊log2(k+14)⌋≤⌊log2(k+24)⌋≤⌊log2(k+34)⌋≤⌊log2k⌋⌊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⌋
故
⌊log2k⌋=⌊log2(k+14)⌋=⌊log2(k+24)⌋=⌊log2(k+34)⌋⌊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)⌋
而
⌊log2(4k+3)⌋=⌊log24(k+34)⌋=⌊2+log2(k+34)⌋=2+⌊log2(k+34)⌋=2+⌊log2k⌋=⌊2+log2k⌋=⌊log24k⌋
⌊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⌋
同理可证:
⌊log2(4k+2)⌋=⌊log24k⌋⌊log2(4k+1)⌋=⌊log24k⌋
⌊log_2 (4k+2) ⌋=⌊log_24k ⌋ \\
⌊log_2 (4k+1) ⌋=⌊log_24k ⌋
⌊log2(4k+2)⌋=⌊log24k⌋⌊log2(4k+1)⌋=⌊log24k⌋
故
⌊log24k⌋=⌊log2(4k+1)⌋=⌊log2(4k+2)⌋=⌊log2(4k+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≥2k∈N^+,i≥2k∈N+,i≥2。
将4k4k4k用二进制展开:
4k=[mod⌊log24k⌋+1(4k,2)…mod3(4k,2)00]24k=[mod_{⌊log_24k ⌋+1} (4k,2)…mod_3 (4k,2)00]_24k=[mod⌊log24k⌋+1(4k,2)…mod3(4k,2)00]2
则有:
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
\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
注意最后的等号是恒等变形,未对前面的位有任何改动。
另一方面,将4k+14k+14k+1用二进制展开:
4k+1=[mod⌊log2(4k+1)⌋+1(4k+1,2)…mod3(4k+1,2)01]24k+1=[mod_{⌊log_2 (4k+1) ⌋+1} (4k+1,2)…mod_3 (4k+1,2)01]_24k+1=[mod⌊log2(4k+1)⌋+1(4k+1,2)…mod3(4k+1,2)01]2
又由于(2)(2)(2)中已证明
⌊log24k⌋=⌊log2(4k+1)⌋=⌊log2(4k+2)⌋=⌊log2(4k+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)⌋
得
4k+1=[mod⌊log24k⌋+1(4k+1,2)…mod3(4k+1,2)01]24k+1=[mod_{⌊log_24k ⌋+1} (4k+1,2)…mod_3 (4k+1,2)01]_24k+1=[mod⌊log24k⌋+1(4k+1,2)…mod3(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
[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
于是有
modi+1(4k,2)=modi+1(4k+1,2)mod_{i+1} (4k,2)=mod_{i+1} (4k+1,2)modi+1(4k,2)=modi+1(4k+1,2)
同理可证:
modi+1(4k,2)=modi+1(4k+2,2)modi+1(4k,2)=modi+1(4k+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)
综上:
modi+1(4k,2)=modi+1(4k+1,2)=modi+1(4k+2,2)=modi+1(4k+3,2),k∈N+,i≥2mod_{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
证毕。