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

介绍了一种快速求解连续自然数或整数异或值的算法,通过模运算和递归方式,实现最坏时间复杂度为7次异或。适用于查找重复或缺失值问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

  • 最近看到用异或找出连续自然数中某一值重复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<ba,bN
  • 规定:异或是双目运算符,当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(a1mod(a1,4),a1)f(bmod(b,4),b)a,bN,ab
其中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^+yN+),补充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),xN,yN+
    则公式
    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(a1mod(a1,4),a1)f(bmod(b,4),b)a,bZ,ab
    仍成立,且公式(1)(2)(3)仍成立(证明略)。
  • 推论2:特别地,当a=4k,k∈Za=4k, k∈Za=4k,kZb∈Z,a≤bb∈Z, a≤bbZ,ab时,mod(a,4)=0mod(a,4)=0mod(a,4)=0,
    pace=mod(b−a,4)pace=mod(b-a,4)pace=mod(ba,4),则有
pacepacepacef(a,b)f(a,b)f(a,b)
000bbb
111111
222b+1b+1b+1
333000
  • 代码示例:(示例代码的适用范围已从连续自然数扩展为连续整数,见推论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,kZa≤ba≤bab 时,
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(b4k,4)=mod(ba,4)=pace,kZ
可记 b=4k′+mod(b,4)=4k′+pace,k′∈Zb=4k'+mod(b,4)=4k'+pace, k'∈Zb=4k+mod(b,4)=4k+pace,kZ
由公式(1)f(4k,4k+3)=0,k∈Nf(4k,4k+3)=0,k∈Nf(4k,4k+3)=0,kN及推论1,
可得 f(4(k−1),4(k−1)+3)=0,k∈Zf(4(k-1),4(k-1)+3)=0,k∈Zf(4(k1),4(k1)+3)=0,kZ

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(a1mod(a1,4),a1)f(bmod(b,4),b)=f(4k1mod(4k1,4),4k1)f(bpace,b)=f(4k1mod(4k1,4),4k1)f(4k,4k+pace)=f(4k13,4k1)f(4k,4k+pace)=f(4(k1),4(k1)+3)f(4k,4k+pace)=0f(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⨁aab=ba
  • 2、结合律:(a⨁b)⨁c=a⨁(b⨁c)(a⨁b)⨁c=a⨁(b⨁c)(ab)c=a(bc)
  • 3、基本等式:a⨁a=0,a⨁0=a,a⨁b⨁b=aa⨁a=0,a⨁0=a, a⨁b⨁b=aaa=0a0=aabb=a
    其中a,b,c∈Na,b,c∈Na,b,cN
  • 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=(ama1a0)2b=(bn…b1b0)2b=(b_n…b_1 b_0)_2b=(bnb1b0)2
    a⨁b=(am…a1a0)2⨁(bn…b1b0)2a⨁b=(a_m…a_1 a_0)_2⨁(b_n…b_1 b_0)_2ab=(ama1a0)2(bnb1b0)2,当m≥nm≥nmn时,有:
    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 ab=(amana1a0)2(bnb1b0)2=[val(am0)val(an+10)val(anbn)val(a1b1)val(a0b0)]2
    其中val(an⨁bn)val(a_n⨁b_n)val(anbn)an⨁bna_n⨁b_nanbn的值,将值赋给第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)]_2ab=[val(ambm)val(a1b1)val(a0b0)]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 ab=[val(ambm)val(a1b1)val(a0b0)]2=val(ambm)2m++val(a1b1)21+val(a0b0)20=i=0mval(aibi)2i
    m<nm<nm<n时同理有:a⨁b=∑i=0nval(ai⨁bi)∗2ia⨁b=∑_{i=0}^n val(a_i⨁b_i )*2^iab=i=0nval(aibi)2i
    综上:
    a⨁b=∑i=0max⁡⁡(m,n)val(ai⨁bi)∗2ia⨁b=∑_{i=0}^{\max⁡(m,n)} val(a_i⨁b_i )*2^iab=i=0max(m,n)val(aibi)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=0kmodi+1(x,2)2i=[modk+1(x,2)mod2(x,2)mod1(x,2)]2
    其中k=⌊log2⁡x⌋,modi+1(x,2)k=⌊log_2⁡x ⌋, mod_{i+1} (x,2)k=log2x,modi+1(x,2)表示 xxx222取余数运算第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 ab=(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
    其中ka=⌊log2⁡a⌋,kb=⌊log2⁡b⌋k_a=⌊log_2⁡a ⌋,k_b=⌊log_2⁡b ⌋ka=log2a,kb=log2b

3.2 连续自然数的异或

4位2进制表示图
异或可看作统计二进制表示中对应位状态为1的奇偶个数的运算。从图中看出如下规律:
f(4k,4k+3)=0,k∈N(1)f(4k,4k+3)=0,k∈N \tag{1}f(4k,4k+3)=0,kN(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,k2Nk1k2
于是有
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,bmod(b,4)1)f(bmod(b,4),b)=0f(bmod(b,4),b)=f(bmod(b,4),b)
其中b∈N且b≥4b∈N且b≥4bNb4。注意自然数b−mod(b,4)b-mod(b,4)bmod(b,4)444的倍数,即b−mod(b,4)∈{x∣x=4k,k∈N}b-mod(b,4)∈\{x|x=4k,k∈N\}bmod(b,4){xx=4k,kN}
b∈[0,3]b∈[0,3]b[0,3]时,可得b−mod(b,4)=0b-mod(b,4)=0bmod(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(bmod(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(bmod(b,4),b),bN
最终求出
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,a1)f(0,a1)f(a,b)=f(0,a1)f(0,b)=f(a1mod(a1,4),a1)f(bmod(b,4),b)
最坏时间复杂度为7次异或。


注意事项:
f(4k,4k−3)f(4k,4k-3)f(4k,4k3)中的4k4k4k444的倍数,此函数本身并不是周期函数,而是在震荡特性上类似于函数y=xsin(π/2∗x)y=xsin(\pi/2*x)y=xsin(π/2x),只是存在一个特殊的周期序列。
本文到此已基本结束,有兴趣的可以继续看下文的证明,仅作参考,如有错误恳请指正。


附:
(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,4k3)=f(0,3)=0123=(00)2(01)2(10)2(11)2=(00)2=0
k∈N+k∈N^+kN+时:
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,4k3)=4k(4k+1)(4k+2)(4k+3)=i=0log2(4k+3)val[modi+1(4k,2)modi+1(4k+1,2)modi+1(4k+2,2)modi+1(4k+3,2)]2i=i=2log2(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)=0101=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)=0011=0
i≥2i≥2i2时(证明附后):
⌊log2⁡4k⌋=⌊log2⁡(4k+1)⌋=⌊log2⁡(4k+2)⌋=⌊log2⁡(4k+3)⌋,k∈N+(2)⌊log_2⁡4k ⌋=⌊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),kN+(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),kN+,i2(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,4k3)={i=2log2(4k+3)val[modi+1(4k,2)modi+1(4k+1,2)modi+1(4k+2,2)modi+1(4k+3,2)]2i}+val[0011]21+val[0101]20={i=2log2(4k+3)val[modi+1(4k,2)modi+1(4k,2)modi+1(4k,2)modi+1(4k,2)]2i}+val[0011]21+val[0101]20=[i=2log2(4k+3)02i]+021+020=0
综上:f(4k,4k−3)=0,k∈Nf(4k,4k-3)=0,k∈Nf(4k,4k3)=0,kN
证毕。

(2)(2)2
k∈N+⌊log2⁡k⌋,⌊log2⁡k⌋+1∈N2⌊log2⁡k⌋,2⌊log2⁡k⌋+1∈Nk∈N^+ \\ ⌊log_2⁡k ⌋,⌊log_2⁡k ⌋+1∈N \\ 2^{⌊log_2⁡k⌋} ,2^{⌊log_2⁡k⌋+1}∈N kN+log2k,log2k+1N2log2k,2log2k+1N
根据下取整定义:
⌊log2⁡k⌋≤log2⁡k<⌊log2⁡k⌋+12⌊log2⁡k⌋≤k<2⌊log2⁡k⌋+1 ⌊log_2⁡k ⌋≤log_2⁡k<⌊log_2⁡k ⌋+1 \\ 2^{⌊log_2⁡k ⌋} ≤k<2^{⌊log_2⁡k ⌋+1} \\ log2klog2k<log2k+12log2kk<2log2k+1
k,2⌊log2⁡k⌋+1∈Nk,2^{⌊log_2⁡k ⌋+1}∈Nk,2log2k+1N
2⌊log2⁡k⌋≤k<k+1≤2⌊log2⁡k⌋+12^{⌊log_2⁡k ⌋} ≤k<k+1≤2^{⌊log_2⁡k ⌋+1}2log2kk<k+12log2k+1
故有:
2⌊log2⁡k⌋≤k<k+34<k+1≤2⌊log2⁡k⌋+1⌊log2⁡k⌋≤log2⁡k<log2⁡(k+34)<log2⁡(k+1)≤⌊log2⁡k⌋+1 2^{⌊log_2⁡k ⌋} ≤k<k+\frac{3}{4}<k+1≤2^{⌊log_2⁡k ⌋+1} \\ ⌊log_2⁡k ⌋≤log_2⁡ k<log_2 ⁡(k+\frac{3}{4})<log_2⁡ (k+1)≤⌊log_2⁡k ⌋+1 2log2kk<k+43<k+12log2k+1log2klog2k<log2(k+43)<log2(k+1)log2k+1
即有
⌊log2⁡k⌋<log2⁡(k+34)<⌊log2⁡k⌋+1⌊log_2⁡k ⌋<log_2⁡(k+\frac{3}{4})<⌊log_2⁡k ⌋+1log2k<log2(k+43)<log2k+1
根据下取整的定义、单调不减性质可得:
⌊log2⁡k⌋≤⌊log2⁡(k+34)⌋≤log2⁡(k+34)<⌊log2⁡k⌋+1⌊log_2⁡k ⌋≤⌊log_2⁡(k+\frac{3}{4}) ⌋≤log_2⁡(k+\frac{3}{4})<⌊log_2⁡k ⌋+1log2klog2(k+43)log2(k+43)<log2k+1
又由于⌊log2⁡k⌋,⌊log2⁡(k+34)⌋∈N⌊log_2⁡k ⌋, ⌊log_2⁡(k+\frac{3}{4}) ⌋∈Nlog2k,log2(k+43)N,故可根据上式中⌊log2⁡(k+34)⌋<⌊log2⁡k⌋+1⌊log_2⁡(k+\frac{3}{4}) ⌋<⌊log_2⁡k ⌋+1log2(k+43)<log2k+1
⌊log2⁡(k+34)⌋≤(⌊log2⁡k⌋+1)−1=⌊log2⁡k⌋⌊log_2⁡ (k+\frac{3}{4}) ⌋≤(⌊log_2 ⁡k ⌋+1)-1=⌊log_2⁡k ⌋log2(k+43)(log2k+1)1=log2k
综合以上两个不等式,得
⌊log2⁡k⌋≤⌊log2⁡(k+34)⌋≤⌊log2⁡k⌋⌊log_2⁡k ⌋≤⌊log_2⁡ (k+\frac{3}{4}) ⌋≤⌊log_2⁡k ⌋log2klog2(k+43)log2k
根据下取整的定义、单调不减性质,得
⌊log2⁡k⌋≤⌊log2⁡(k+14)⌋≤⌊log2⁡(k+24)⌋≤⌊log2⁡(k+34)⌋≤⌊log2⁡k⌋⌊log_2⁡k ⌋≤⌊log_2⁡(k+\frac{1}{4}) ⌋≤⌊log_2⁡(k+\frac{2}{4}) ⌋≤⌊log_2⁡(k+\frac{3}{4}) ⌋≤⌊log_2⁡k ⌋log2klog2(k+41)log2(k+42)log2(k+43)log2k

⌊log2⁡k⌋=⌊log2⁡(k+14)⌋=⌊log2⁡(k+24)⌋=⌊log2⁡(k+34)⌋⌊log_2⁡k ⌋=⌊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)⌋=⌊log2⁡4(k+34)⌋=⌊2+log2⁡(k+34)⌋=2+⌊log2⁡(k+34)⌋=2+⌊log2⁡k⌋=⌊2+log2⁡k⌋=⌊log2⁡4k⌋ ⌊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_2⁡k ⌋=⌊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)⌋=⌊log2⁡4k⌋⌊log2⁡(4k+1)⌋=⌊log2⁡4k⌋ ⌊log_2⁡ (4k+2) ⌋=⌊log_2⁡4k ⌋ \\ ⌊log_2 ⁡(4k+1) ⌋=⌊log_2⁡4k ⌋ log2(4k+2)=log24klog2(4k+1)=log24k

⌊log2⁡4k⌋=⌊log2⁡(4k+1)⌋=⌊log2⁡(4k+2)⌋=⌊log2⁡(4k+3)⌋,k∈N+⌊log_2⁡4k ⌋=⌊log_2⁡ (4k+1) ⌋=⌊log_2⁡ (4k+2) ⌋=⌊log_2 ⁡(4k+3) ⌋,k∈N^+log24k=log2(4k+1)=log2(4k+2)=log2(4k+3),kN+
证毕。

(3)(3)3
已知k∈N+,i≥2k∈N^+,i≥2kN+,i2
4k4k4k用二进制展开:
4k=[mod⌊log2⁡4k⌋+1(4k,2)…mod3(4k,2)00]24k=[mod_{⌊log_2⁡4k ⌋+1} (4k,2)…mod_3 (4k,2)00]_24k=[modlog24k+1(4k,2)mod3(4k,2)00]2
则有:
4k+1=[mod⌊log2⁡4k⌋+1(4k,2)…mod3(4k,2)00]2+1=[mod⌊log2⁡4k⌋+1(4k,2)…mod3(4k,2)00]2+[01]2=[mod⌊log2⁡4k⌋+1(4k,2)…mod3(4k,2)01]2 \begin{aligned} 4k+1&=[mod_{⌊log_2⁡4k ⌋+1} (4k,2)…mod_3 (4k,2)00]_2+1 \\ &=[mod_{⌊log_2⁡4k ⌋+1} (4k,2)…mod_3 (4k,2)00]_2+[01]_2 \\ &=[mod_{⌊log_2⁡4k ⌋+1} (4k,2)…mod_3 (4k,2)01]_2 \end{aligned} 4k+1=[modlog24k+1(4k,2)mod3(4k,2)00]2+1=[modlog24k+1(4k,2)mod3(4k,2)00]2+[01]2=[modlog24k+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=[modlog2(4k+1)+1(4k+1,2)mod3(4k+1,2)01]2
又由于(2)(2)2中已证明
⌊log2⁡4k⌋=⌊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⌊log2⁡4k⌋+1(4k+1,2)…mod3(4k+1,2)01]24k+1=[mod_{⌊log_2⁡4k ⌋+1} (4k+1,2)…mod_3 (4k+1,2)01]_24k+1=[modlog24k+1(4k+1,2)mod3(4k+1,2)01]2

[mod⌊log2⁡4k⌋+1(4k,2)…mod3(4k,2)01]2=[mod⌊log2⁡4k⌋+1(4k+1,2)…mod3(4k+1,2)01]2 [mod_{⌊log_2⁡4k ⌋+1} (4k,2)…mod_3 (4k,2)01]_2 \\ =[mod_{⌊log_2⁡4k ⌋+1} (4k+1,2)…mod_3 (4k+1,2)01]_2 [modlog24k+1(4k,2)mod3(4k,2)01]2=[modlog24k+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),kN+,i2
证毕。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bird_fly_i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值