本片博客中有很多前置知识,请一定要保证自己看懂,这样后面的学习会非常的轻松!!!
剩余系
剩余系指对于某一个特定的正整数
n
n
,一个整数集中的数模所得的余数域
如果一个剩余系中包含了这个正整数所有可能的余数,那么称之为模
n
n
的完全剩余系
简化剩余系是的完全剩余系中与 n n 互素的数构成的子集
群
群的阶数定义为集合元素的个数,记作 |G| | G |
如果 G G 只有有限个元素,称为有限群
群的运算一般不可交换
满足交换律的群称为阿贝尔群(Abelian group)
模 n n 的简化剩余系关于乘法构成的代数系统是群
封闭性: gcd(ab,n)=gcd(abmodn,n)=1 g c d ( a b , n ) = g c d ( a b mod n , n ) = 1
结合律:乘法满足结合律
单位元: e=1 e = 1
逆元素: ax≡1(modn) a x ≡ 1 ( mod n ) 在 Z∗n Z n ∗ 中有唯一解
子群
设
G
G
是群,是
G
G
的一个子集,如果仍然是群,或等价的满足
封闭性:
∀a,b∈S,a∗b∈S
∀
a
,
b
∈
S
,
a
∗
b
∈
S
结合律:显然满足结合律
单位元:设
G
G
的单位元为,有
e∈S
e
∈
S
逆元素:
∀a∈S
∀
a
∈
S
,其在
G
G
中有逆元,
a−1∈S
a
−
1
∈
S
则称
S
S
是的一个子群
e
e
和
G
G
为的平凡子群
陪集
设 H H 为的子群, a∈G a ∈ G ,定义
称 aH a H 是 H H 的一个左陪集
显然的陪集中的元素与子集中的元素满足双射关系
f(x)=ax,f(x)−1=a−1x f ( x ) = a x , f ( x ) − 1 = a − 1 x
加上自己的一点理解?
a∈G,a−1∈G,x1∈H,x2∈H a ∈ G , a − 1 ∈ G , x 1 ∈ H , x 2 ∈ H
若 a∗x1≡b(modn),a∗x2≡b(modn) a ∗ x 1 ≡ b ( mod n ) , a ∗ x 2 ≡ b ( mod n )
则 b∈G,b∗a−1=x1=x2 b ∈ G , b ∗ a − 1 = x 1 = x 2
所以子集中的元素乘 a a 后并不会映射到同一个元素上
同理, 陪集中的元素不会映射到同一个元素上
所以满足双射关系(自己理解和上面式子无关)
若 a∈H a ∈ H ,则 aH=H a H = H
(aH=bH)∨(aH∩bH=∅) ( a H = b H ) ∨ ( a H ∩ b H = ∅ )
即 aH a H 和 bH b H 不可能既不等价,又有交集
证明:
若使得 aH∩bH≠∅ a H ∩ b H ≠ ∅
必然有 ah1=bh2 a h 1 = b h 2
a=h2∗h−11∗b a = h 2 ∗ h 1 − 1 ∗ b
aH=bH∗h2∗h−11=bH a H = b H ∗ h 2 ∗ h 1 − 1 = b H
∀g∈G,g∈gH ∀ g ∈ G , g ∈ g H
G⊆⋃a∈GaH G ⊆ ⋃ a ∈ G a H
显然的 ⋃a∈GaH⊆G ⋃ a ∈ G a H ⊆ G
所以
即对于同一子集所形成的所有陪集的并等价于全集
陪集划分定理
假设有 a1,a2,⋯,ak∈G a 1 , a 2 , ⋯ , a k ∈ G
G=⋃ki=1aiH G = ⋃ i = 1 k a i H
其中 aiH∩ajH=∅(i≠j) a i H ∩ a j H = ∅ ( i ≠ j )
拉格朗日定理
根据陪集划分定理我们可以得到 k∗|aiH|=|G| k ∗ | a i H | = | G |
即 k∗|H|=|G|,|H|∣|G| k ∗ | H | = | G | , | H | ∣ | G |
元素的幂
考虑有限群 G,a∈G G , a ∈ G
元素的幂表示为 ak=e∏ki=1a,a−k=e∏ki=1a−1 a k = e ∏ i = 1 k a , a − k = e ∏ i = 1 k a − 1
使得 ak=e a k = e 的最小正整数 d d 称为的阶,记作 ord(a) o r d ( a )
因为是个有限群,那么一定存在 ord(a) o r d ( a )
考虑由 a a 的幂生成的集合
显然 S S 为的子群
|S|=ord(a)⇒ord(a)∣|G| | S | = o r d ( a ) ⇒ o r d ( a ) ∣ | G |
所以 a|G|=apord(a)=(aord(a))p=ep=e a | G | = a p o r d ( a ) = ( a o r d ( a ) ) p = e p = e
|Z∗n|=φ(n) | Z n ∗ | = φ ( n )
∀a∈Z∗n ∀ a ∈ Z n ∗ ,(即 gcd(a,n)=1 g c d ( a , n ) = 1 ),有
原根
对于群 G G ,若,使得 ord(g)=|G| o r d ( g ) = | G | ,称 g g 为的原根
G G 中每一个元素都是的幂次
因为 gk g k 在模 n n 意义下有种取值
对应了 G G 中的个元素
Z∗n Z n ∗ 存在原根 ⇔n=2,4,pa,2pa ⇔ n = 2 , 4 , p a , 2 p a ,其中 p p 为奇素数
如果存在原根,原根的数目为
考虑这样的素数 p=c∗2l+1 p = c ∗ 2 l + 1
运算都在 Z∗p Z p ∗ 中进行
对于 n=2k(k≤l) n = 2 k ( k ≤ l ) ,令
因为 p p 为素数,所以,所以
消去引理: gdkdn=(gp−1dn)dk=(gp−1n)k=gkn g d n d k = ( g p − 1 d n ) d k = ( g p − 1 n ) k = g n k
折半引理: (gkn)2=(gk+n2n)2=g(p−1)kn ( g n k ) 2 = ( g n k + n 2 ) 2 = g ( p − 1 ) k n
求和引理: ∑n−1i=0(gkn)i={n,n∣k0,n∤k ∑ i = 0 n − 1 ( g n k ) i = { n , n ∣ k 0 , n ∤ k
当 n∣k n ∣ k 时, gkn=(gp−1n)qn=(gp−1)=1 g n k = ( g p − 1 n ) q n = ( g p − 1 ) = 1
当 n∤k n ∤ k 时, gkn≠1,∑n−1i=0(gkn)i=1−gknn1−gkn=0 g n k ≠ 1 , ∑ i = 0 n − 1 ( g n k ) i = 1 − g n k n 1 − g n k = 0
可由等比数列递推公式得到
快速数论变换(NTT)
gn=gp−1n g n = g p − 1 n
wn=e2πin w n = e 2 π i n
wn⇔gn w n ⇔ g n
将 DFT D F T 修改为求 g0n,g1n,g2n,⋯,gn−1n g n 0 , g n 1 , g n 2 , ⋯ , g n n − 1 处的点值
IDFT I D F T 修改为求 g0n,g−1n,g−2n,⋯,g−(n−1)n g n 0 , g n − 1 , g n − 2 , ⋯ , g n − ( n − 1 ) 处的点值
求原根
g g 为的原根 ⇔ord(g)=p−1 ⇔ o r d ( g ) = p − 1
由 ord(g)∣(p−1) o r d ( g ) ∣ ( p − 1 )
设 p−1 p − 1 不同质因子为 p1,p2,⋯,ps p 1 , p 2 , ⋯ , p s
g g 为原根
NTT中模数的选取
c=a⊗b c = a ⊗ b
ci=∑j=0ai−jbj(modp) c i = ∑ j = 0 a i − j b j ( mod p )
如果 ci<p c i < p ,显然结果是精确的
对于 p=c×2k+1 p = c × 2 k + 1 ,必须满足 n≤2k n ≤ 2 k
例: p=119∗223+1=998244353,g=3 p = 119 ∗ 2 23 + 1 = 998244353 , g = 3
NTT题目
BZOJ 4555 求和
任意模数NTT(三模数NTT)
考虑长度为 n n (数量级)的向量在模 P P (数量级,可能非质数)意义下的卷积,即
NTT的模数需要满足条件 P=c∗2k+1 P = c ∗ 2 k + 1 ,为质数
由于 P P 甚至不是质数,难以直接NTT,尝试直接计算出最终结果
的数量级为 1023>264 10 23 > 2 64
那么我们取 int i n t 范围内较大的三个不同的满足NTT条件的质数 p1,p2,p3 p 1 , p 2 , p 3 ,使得 p1p2p3>nP2 p 1 p 2 p 3 > n P 2 ,并分别在模 pi p i 意义下进行卷积。设真实值为 s s ,可以得到:
前两项可以直接在 longlong l o n g l o n g 范围内用CRT合并
令 s=s0+kp1p2=s3+lp3 s = s 0 + k p 1 p 2 = s 3 + l p 3
注意到 k<p3 k < p 3 ,将上式放至模 p3 p 3 意义下,有
模 p3 p 3 意义下所得即为 k k 的真实值,随后在模意义下回代得到 smodp s mod p 的值