Acwing-基础算法课笔记之数学知识(中国剩余定理)

Acwing-基础算法课笔记之数学知识(中国剩余定理)

一、中国剩余定理

1、概述

{ x ≡ a 1 ( m o d m 1 ) x ≡ a 2 ( m o d m 2 ) x ≡ a 3 ( m o d m 3 ) ⋮ x ≡ a n ( m o d m n ) \begin{cases} x \equiv a_1(modm_1) \\ x \equiv a_2(modm_2) \\ x \equiv a_3(modm_3) \\ \vdots \\ x \equiv a_n(modm_n) \end{cases} ⎩ ⎨ ⎧x≡a1(modm1)x≡a2(modm2)x≡a3(modm3)⋮x≡an(modmn),其中 m 1 m_1 m1, m 2 m_2 m2, m 3 m_3 m3, ⋯ \cdots ⋯, m n m_n mn 两两互质。

1、表述一

则 x = a 1 b 1 m 2 m 3 ⋯ m n + a 2 b 2 m 1 m 3 ⋯ m n + ⋯ + a n b n m 1 m 2 ⋯ m n − 1 x=a_1b_1m_2m_3\cdots m_n+a_2b_2m_1m_3\cdots m_n+\cdots +a_nb_nm_1m_2\cdots m_{n-1} x=a1b1m2m3⋯mn+a2b2m1m3⋯mn+⋯+anbnm1m2⋯mn−1,为方程的一个特解,其中 b i b_i bi满足 m 1 m 2 ⋯ m n m i \frac{m_1m_2\cdots m_n}{m_i} mim1m2⋯mn, b i ≡ 1 ( m o d b_i\equiv 1(mod bi≡1(mod m i ) m_i) mi), i = 1 , 2 , 3 , ⋯   , k i=1,2,3,\cdots,k i=1,2,3,⋯,k

在上式中, { f 1 ≡ b 1 m 2 m 3 ⋯ m n f 2 ≡ b 2 m 1 m 3 ⋯ m n ⋮ f n ≡ b n m 1 m 2 ⋯ m n − 1 \begin{cases} f_1 \equiv b_1m_2m_3\cdots m_n \\ f_2 \equiv b_2m_1m_3\cdots m_n \\ \vdots \\ f_n \equiv b_nm_1m_2\cdots m_{n-1} \end{cases} ⎩ ⎨ ⎧f1≡b1m2m3⋯mnf2≡b2m1m3⋯mn⋮fn≡bnm1m2⋯mn−1

2、表述二

{ x ≡ a 1 ( m o d m 1 ) x ≡ a 2 ( m o d m 2 ) x ≡ a 3 ( m o d m 3 ) \begin{cases} x \equiv a_1(modm_1) \\ x \equiv a_2(modm_2) \\ x \equiv a_3(modm_3) \end{cases} ⎩ ⎨ ⎧x≡a1(modm1)x≡a2(modm2)x≡a3(modm3),其中 m 1 m_1 m1, m 2 m_2 m2, m 3 m_3 m3两两互质,找 x x x 的特解。

x = a 1 f 1 + a 2 f 2 + a 3 f 3 x=a_1f_1+a_2f_2+a_3f_3 x=a1f1+a2f2+a3f3,其中 f 1 f_1 f1, f 2 f_2 f2, f 3 f_3 f3分别满足 { f 1 ≡ 1 ( m o d m 1 ) f 1 ≡ 0 ( m o d m 2 ) ,即 m 2 ∣ f 1 ( 1 ) f 1 ≡ 0 ( m o d m 3 ) ,即 m 3 ∣ f 1 \begin{cases} f_1 \equiv 1(modm_1) \\ f_1 \equiv 0(modm_2),即m_2 |f_1 (1)\\ f_1 \equiv 0(modm_3),即m_3 |f_1 \end{cases} ⎩ ⎨ ⎧f1≡1(modm1)f1≡0(modm2),即m2∣f1(1)f1≡0(modm3),即m3∣f1, { m 1 ∣ f 2 f 2 ≡ 1 ( m o d m 2 ) ( 2 ) m 3 ∣ f 2 \begin{cases} m_1 |f_2 \\ f_2 \equiv 1(modm_2) (2)\\ m_3 |f_2 \end{cases} ⎩ ⎨ ⎧m1∣f2f2≡1(modm2)(2)m3∣f2, { m 1 ∣ f 3 m 2 ∣ f 3 ( 3 ) f 3 ≡ 1 ( m o d m 3 ) \begin{cases} m_1 |f_3 \\ m_2 |f_3 (3)\\ f_3 \equiv 1(modm_3) \end{cases} ⎩ ⎨ ⎧m1∣f3m2∣f3(3)f3≡1(modm3)

验证方法:带回
∙ \bullet ∙带回(1)式 x ≡ a 1 ( m o d x\equiv a_1(mod x≡a1(mod m 1 ) m_1) m1),即 a 1 f 1 + a 2 f 2 + a 3 f 3 ≡ a 1 ( m o d a_1f_1+a_2f_2+a_3f_3\equiv a_1(mod a1f1+a2f2+a3f3≡a1(mod m 1 ) m_1) m1),由上式可知: a 1 f 1 ≡ a 1 ( m o d a_1f_1\equiv a_1(mod a1f1≡a1(mod m 1 ) m_1) m1),所以 f 1 ≡ 1 ( m o d m 1 ) f_1 \equiv 1(modm_1) f1≡1(modm1)。
(2),(3)式以此类推。

2、辗转相除法求逆元的回顾

M M − 1 ≡ 1 ( m o d MM^{-1}\equiv1(mod MM−1≡1(mod m ) m) m)
(1)当 M > m M>m M>m时
462 x − 1 ≡ 1 ( m o d 462x^{-1}\equiv1(mod 462x−1≡1(mod 5 ) 5) 5)
⇒ 2 x − 1 ≡ 1 ( m o d \Rarr 2x^{-1}\equiv1(mod ⇒2x−1≡1(mod 5 ) 5) 5)
⇒ 2 x − 1 − 5 y = 1 \Rarr 2x^{-1}-5y=1 ⇒2x−1−5y=1
⇒ 2 × 3 − 5 × 1 = 1 \Rarr 2\times3-5\times1=1 ⇒2×3−5×1=1
⇒ x − 1 = 3 ( m o d \Rarr x^{-1}=3(mod ⇒x−1=3(mod 5 ) 5) 5)
(2)当 M < m M<m M<m时
15 x − 1 ≡ 1 ( m o d 15x^{-1}\equiv1(mod 15x−1≡1(mod 28 ) 28) 28)
⇒ 28 = 15 × 1 + 13 \Rarr 28=15\times1+13 ⇒28=15×1+13
⇒ 15 = 13 × 1 + 2 \Rarr15=13\times1+2 ⇒15=13×1+2
⇒ 13 = 2 × 6 + 1 \Rarr13=2\times6+1 ⇒13=2×6+1
反推:
1 = 13 − ( 15 − 13 × 1 ) × 6 1=13-(15-13\times1)\times6 1=13−(15−13×1)×6
⇒ 1 = 13 × 7 − 15 × 6 \Rarr 1=13\times7-15\times6 ⇒1=13×7−15×6
⇒ 1 = 13 × 7 − 15 × 6 \Rarr 1=13\times7-15\times6 ⇒1=13×7−15×6
⇒ 1 = 15 × ( − 13 ) − 28 × ( − 7 ) \Rarr 1=15\times(-13)-28\times(-7) ⇒1=15×(−13)−28×(−7)
⇒ x − 1 ≡ − 13 = 15 ( m o d \Rarr x^{-1}\equiv-13=15(mod ⇒x−1≡−13=15(mod 28 ) 28) 28)

3、模拟过程

(1)例题一

{ x ≡ 2 ( m o d 3 ) x ≡ 3 ( m o d 5 ) x ≡ 2 ( m o d 7 ) \begin{cases} x \equiv 2(mod3) \\ x \equiv 3(mod5) \\ x \equiv 2(mod7) \end{cases} ⎩ ⎨ ⎧x≡2(mod3)x≡3(mod5)x≡2(mod7)
根据上式求 x x x 的值:
x = M 1 M 1 − 1 b 1 + ⋯ + M i M i − 1 b i ( m o d x=M_1M_1^{-1}b_1+\cdots+M_iM_i^{-1}b_i(mod x=M1M1−1b1+⋯+MiMi−1bi(mod M ) M) M)

可求:
∙ \bullet ∙ M 1 = 5 × 7 = 35 M_1=5\times7=35 M1=5×7=35
35 × M 1 − 1 ≡ 1 ( m o d 35\times M_1^{-1}\equiv1(mod 35×M1−1≡1(mod 3 ) 3) 3)
⇔ M 1 − 1 ≡ 2 ( m o d \Harr M_1^{-1}\equiv2(mod ⇔M1−1≡2(mod 3 ) 3) 3)

∙ \bullet ∙ M 2 = 3 × 7 = 21 M_2=3\times7=21 M2=3×7=21
M 2 − 1 ≡ 1 ( m o d M_2^{-1}\equiv1(mod M2−1≡1(mod 5 ) 5) 5)

∙ \bullet ∙ M 3 = 3 × 5 = 15 M_3=3\times5=15 M3=3×5=15
M 3 − 1 ≡ 1 ( m o d M_3^{-1}\equiv1(mod M3−1≡1(mod 7 ) 7) 7)
所以, M = 3 × 5 × 7 = 105 M=3\times5\times7=105 M=3×5×7=105

x = 2 × 35 × 2 + 3 × 21 × 1 + 2 × 15 × 1 ( m o d x=2\times35\times2+3\times21\times1+2\times15\times1(mod x=2×35×2+3×21×1+2×15×1(mod 105 ) 105) 105)
≡ 233 ( m o d \equiv233(mod ≡233(mod 105 ) 105) 105)
≡ 23 ( m o d \equiv23(mod ≡23(mod 105 ) 105) 105)

(2)例题二

{ x ≡ 2 ( m o d 3 ) x ≡ 3 ( m o d 4 ) x ≡ 5 ( m o d 7 ) \begin{cases} x \equiv 2(mod3) \\ x \equiv 3(mod4) \\ x \equiv 5(mod7) \end{cases} ⎩ ⎨ ⎧x≡2(mod3)x≡3(mod4)x≡5(mod7)

根据上式求 x x x 的值:
x = M 1 M 1 − 1 b 1 + ⋯ + M i M i − 1 b i ( m o d x=M_1M_1^{-1}b_1+\cdots+M_iM_i^{-1}b_i(mod x=M1M1−1b1+⋯+MiMi−1bi(mod M ) M) M)

可求:
∙ \bullet ∙ M 1 = 4 × 7 = 28 M_1=4\times7=28 M1=4×7=28
28 × M 1 − 1 ≡ 1 ( m o d 28\times M_1^{-1}\equiv1(mod 28×M1−1≡1(mod 3 ) 3) 3)
⇔ M 1 − 1 ≡ 1 ( m o d \Harr M_1^{-1}\equiv1(mod ⇔M1−1≡1(mod 3 ) 3) 3)

∙ \bullet ∙ M 2 = 3 × 7 = 21 M_2=3\times7=21 M2=3×7=21
21 × M 2 − 1 ≡ 1 ( m o d 21\times M_2^{-1}\equiv1(mod 21×M2−1≡1(mod 4 ) 4) 4)
⇔ M 1 − 1 ≡ 1 ( m o d \Harr M_1^{-1}\equiv1(mod ⇔M1−1≡1(mod 4 ) 4) 4)

∙ \bullet ∙ M 3 = 3 × 4 = 12 M_3=3\times4=12 M3=3×4=12
12 × M 2 − 1 ≡ 1 ( m o d 12\times M_2^{-1}\equiv1(mod 12×M2−1≡1(mod 7 ) 7) 7)
⇔ 5 × M 2 − 1 ≡ 1 ( m o d \Harr 5\times M_2^{-1}\equiv1(mod ⇔5×M2−1≡1(mod 7 ) 7) 7)
⇔ 5 × M 2 − 1 − 7 × y = 1 \Harr 5\times M_2^{-1}-7\times y=1 ⇔5×M2−1−7×y=1
⇔ 5 × 2 − 7 × 1 = 3 \Harr 5\times2-7\times1=3 ⇔5×2−7×1=3
⇔ 7 − 3 × 2 = 1 \Harr 7-3\times2=1 ⇔7−3×2=1
⇔ 5 × ( − 4 ) − 7 × ( − 3 ) = 1 \Harr 5\times(-4)-7\times(-3)=1 ⇔5×(−4)−7×(−3)=1
⇔ M 3 − 1 = − 4 \Harr M_3^{-1}=-4 ⇔M3−1=−4
⇔ M 3 − 1 % 7 = 3 \Harr M_3^{-1}\%7=3 ⇔M3−1%7=3
⇔ M 3 − 1 = 3 ( m o d \Harr M_3^{-1}=3(mod ⇔M3−1=3(mod 7 ) 7) 7)

所以, M = 3 × 4 × 7 = 84 M=3\times4\times7=84 M=3×4×7=84
x ≡ 2 × 28 × 1 + 3 × 21 × 1 + 5 × 12 × 3 ( m o d x\equiv2\times28\times1+3\times21\times1+5\times12\times3(mod x≡2×28×1+3×21×1+5×12×3(mod 84 ) 84) 84)
≡ 299 ( m o d \equiv299(mod ≡299(mod 84 ) 84) 84)
≡ 47 ( m o d \equiv47(mod ≡47(mod 84 ) 84) 84)

4、闫氏思想

{ x ≡ a 1 ( m o d m 1 ) x ≡ a 2 ( m o d m 2 ) x ≡ a 3 ( m o d m 3 ) ⋮ x ≡ a n ( m o d m n ) \begin{cases} x \equiv a_1(modm_1) \\ x \equiv a_2(modm_2) \\ x \equiv a_3(modm_3) \\ \vdots \\ x \equiv a_n(modm_n) \end{cases} ⎩ ⎨ ⎧x≡a1(modm1)x≡a2(modm2)x≡a3(modm3)⋮x≡an(modmn),其中 m 1 m_1 m1, m 2 m_2 m2, m 3 m_3 m3, ⋯ \cdots ⋯, m n m_n mn 两两互质。

{ x = k 1 ⋅ a 1 + m 1 x = k 2 ⋅ a 2 + m 2 \begin{cases} x = k_1\sdot a_1+m_1 \\ x = k_2\sdot a_2+m_2 \\ \end{cases} {x=k1⋅a1+m1x=k2⋅a2+m2
⇒ k 1 ⋅ a 1 + m 1 = k 2 ⋅ a 2 + m 2 \Rarr k_1\sdot a_1+m_1 = k_2\sdot a_2+m_2 ⇒k1⋅a1+m1=k2⋅a2+m2
⇒ k 1 ⋅ a 1 − k 2 ⋅ a 2 = m 2 − m 1 \Rarr k_1\sdot a_1-k_2\sdot a_2 = m_2-m_1 ⇒k1⋅a1−k2⋅a2=m2−m1

若有解等价于 g c d ( a 1 , a 2 ) ∣ ( m 2 − m 1 ) gcd(a_1,a_2)|(m_2-m_1) gcd(a1,a2)∣(m2−m1)
{ k 1 = k 1 + k ⋅ a 2 d k 2 = k 2 + k ⋅ a 1 d \begin{cases} k_1=k_1+k\sdot \frac{a_2}{d} \\ k_2=k_2+k\sdot \frac{a_1}{d} \\ \end{cases} {k1=k1+k⋅da2k2=k2+k⋅da1
x = k 1 ⋅ a 1 + m 1 x=k_1\sdot a_1+m_1 x=k1⋅a1+m1
⇒ x = ( k 1 + k ⋅ a 2 d ) ⋅ a 1 + m 1 \Rarr x=(k_1+k\sdot \frac{a_2}{d})\sdot a_1+m_1 ⇒x=(k1+k⋅da2)⋅a1+m1
⇒ x = a 1 k 1 + m 1 + k a 1 a 2 d \Rarr x=a_1k_1+m_1+k\frac{a_1a_2}{d} ⇒x=a1k1+m1+kda1a2
⇒ x = a 1 k 1 + m 1 + k ⋅ l c m [ a 1 , a 2 ] \Rarr x=a_1k_1+m_1+k\sdot lcm[a_1,a_2] ⇒x=a1k1+m1+k⋅lcm[a1,a2]
⇒ x = x 0 + k a \Rarr x=x_0+ka ⇒x=x0+ka(和 x = k 1 ⋅ a 1 + m 1 x = k_1\sdot a_1+m_1 x=k1⋅a1+m1类似)
所以可以把两个式子合并成一个 x = x 0 + k a x=x_0+ka x=x0+ka,即 x x x m o d mod mod a ≡ x 0 a\equiv x_0 a≡x0

5、求最小正整数解

k = ( k % t + t ) % t k=(k\%t+t)\%t k=(k%t+t)%t
例如: ( − 5 % 3 + 3 ) % 3 = 1 (-5\%3+3)\%3=1 (−5%3+3)%3=1
− 5 -5 −5 除以 3 3 3 的余数是 1 1 1,所以 − 5 -5 −5 除以 3 3 3 等于 − 1 -1 −1 余 1 1 1。

二、扩展知识

在数学中," a ∣ b a|b a∣b" 表示 " a a a" 能够整除 " b b b",也就是说," b b b" 能够被 " a a a" 整除而不产生余数。这通常用来描述整数之间的关系。例如,如果我们说 " 3 ∣ 12 3|12 3∣12",意思是 3 3 3 能够整除 12 12 12,因为 12 12 12 除以 3 3 3 得到的商是一个整数。

相关推荐
LNTON羚通34 分钟前
摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现
算法·目标检测·音视频·监控·视频监控
Red Red1 小时前
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务
网络·笔记·学习·安全·web安全
贰十六2 小时前
笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署
笔记·nginx·centos
知兀2 小时前
Java的方法、基本和引用数据类型
java·笔记·黑马程序员
哭泣的眼泪4082 小时前
解析粗糙度仪在工业制造及材料科学和建筑工程领域的重要性
python·算法·django·virtualenv·pygame
Microsoft Word3 小时前
c++基础语法
开发语言·c++·算法
天才在此3 小时前
汽车加油行驶问题-动态规划算法(已在洛谷AC)
算法·动态规划
醉陌离3 小时前
渗透测试笔记——shodan(4)
笔记
LateBloomer7773 小时前
FreeRTOS——信号量
笔记·stm32·学习·freertos
legend_jz3 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法