FFT

FFT 理论回顾
算法实现,对于 C(x)=A(x)B(x)C(x) = A(x)B(x)A(x)A(x) 幂指为 mmB(x)B(x) 幂指为 nn

步骤1,补 00,预处理处理位逆序置换,多项式卷积应该有 tottot 项,必须满足 2tot(m+n+1)2^{tot} \geqslant (m+n+1)
设系数向量为 v1,v2\bm{v}_1, \bm{v}_2,这样得到两个 O(2n)O(2n) 多项式

步骤2,计算 O(2n)O(2n) 多项式的点表示法,f1=DFT(v1), f2=DFT(v2)\bm{f}_1 = \text{DFT}(\bm{v}_1), \ \bm{f}_2 = \text{DFT}(\bm{v}_2)
f1,f2\bm{f}_1, \bm{f}_2 就是两个多项式在 O(2n)O(2n) 次单位根处的点表示

步骤3,计算 f1f2\bm{f}_1 \cdot \bm{f}_2,向量每一维对应相乘,得到 f\bm{f}

步骤4,计算 v=IDFT(f)\bm{v} = \text{IDFT}(\bm{f}),其中 f\bm{f} 就是乘积的系数向量

具体到一些细节上

细节1
DFT\text{DFT}IDFT\text{IDFT} 可以统一起来
计算 DFT\text{DFT} 的时候,v\bm{v} 对应的第 kk 项,再对应到矩阵 VnV_n 中的值为 ωnk\omega_n^k

实际上就是取决于单位根 ωn=e2πi/n=cos(2πn)+isin(2πn)\displaystyle \omega_n = \text{e}^{2\pi i / n} = \cos \left(\frac{2\pi}{n} \right) + i \sin \left(\frac{2\pi}{n} \right)
定义 ω=1\omega = 1,然后迭代 kk 次,每一次令 ω=ωωn\omega = \omega \cdot \omega_n

IDFT\text{IDFT} 呢?最终我们得到卷积第 kk 项系数 ak=1nωnka_k = \displaystyle \frac{1}{n} \cdot \omega_n^{-k}
这取决于 ωn1=cos(2πn)isin(2πn)\displaystyle \omega_n^{-1} = \cos \left(\frac{2\pi}{n} \right) - i \sin \left(\frac{2\pi}{n} \right)

同样可以定义 ω=1\omega = 1,迭代 kk 次,每次令 ω=ωωn1\omega = \omega \cdot \omega_n^{-1}

DFT(v,1)\text{DFT}(\bm{v}, 1) 表示 DFT\text{DFT} 过程,DFT(v,1)\text{DFT}(\bm{v}, -1) 就表示 IDFT\text{IDFT},区别就在于 isini \sin 之前乘不乘 1-1

细节2
自底向上归并,根据
左半边 A(ωnk)=A0(ωn/2k)+ωnkA1(ωn/2k)\displaystyle A(\omega_{n}^k) = A_0(\omega_{n/2}^k) + \omega_{n}^k A_1(\omega_{n/2}^k)
右半边 A(ωnk)=A0(ωn/2k)ωnkA1(ωn/2k)\displaystyle A(\omega_{n}^k) = A_0(\omega_{n/2}^k) - \omega_{n}^k A_1(\omega_{n/2}^k)

归并的最底层,代入 ω1k=1\omega_1^k = 1,所以最底层,实际上就是相对应的多项式系数 aka_k

mid=n/2mid = n/2,那么我们有
formid[1,2,4,,O(2n)):fori[0,2mid,4mid,,O(2n))\textbf{for} \quad mid\in [1, 2, 4, \cdots, O(2n)): \quad \textbf{for} \quad i \in [0, 2mid, 4mid, \cdots, O(2n))

注意这里归并的最底层,A(ω1k)=kakA(\omega_1^k) = \displaystyle \sum_{k}a_k
一边迭代一边求 ωnk\omega_n^k,就是令 ω=1\omega = 1,然后每一次 ω=ωωn\omega = \omega \cdot \omega_n

j[0,mid1)j \in [0, mid-1),取出原来对应的 xA[i+j],yωnkA[i+j+mid]x \leftarrow A[i+j], \quad y \leftarrow \omega_n^k \cdot A[i+j+mid]
更新 A[i+j]x+y,A[i+j+mid]xyA[i+j] \leftarrow x+y, \quad A[i+j+mid] \leftarrow x-y
然后不要忘记更新 ω=ωωn\omega = \omega \cdot \omega_n

1

原根理论

常用结论

Euler 函数的不完全积性,当且仅当 (n,m)=1(n, m) = 1 时,φ(nm)=φ(n)φ(m)\varphi(nm) = \varphi(n) \varphi(m)
n=pkn = p^k 时,φ(n)=pkpk1\varphi(n) = p^k - p^{k-1}

满足 an1(modp)a^n \equiv 1 (\bmod p)最小正整数 nn 存在,这个 nn 称为 aa 模 pp 的阶,记为 δp(a)\delta_p(a)

性质1
<a,a2,a3,,aδp(a)>\left<a, a^2, a^3, \cdots, a^{\delta_p(a)} \right> 两两互不同余

考虑反证法,如果存在 aiaj(modp)a^i \equiv a^j (\bmod p),那么 aij1(modp)a^{i - j} \equiv 1(\bmod p)
但是 ij<δp(a)|i - j| < \delta_p(a),这与阶的定义矛盾

性质2
如果 an1(modp)a^n \equiv 1 (\bmod p),那么 δp(a)n\delta_p(a) \mid n,也可以推出 δp(a)ϕ(p)\delta_p(a) \mid \phi(p)

我们有 n=δp(a)q+r,0rδp(a)1n = \delta_p(a) \cdot q + r, \quad 0 \leqslant r \leqslant \delta_p(a)-1
如果 r>0r > 0,那么有 aran(aδp(a))q1(modp)\displaystyle a^r \equiv a^n \cdot \left(a^{\delta_p(a)} \right)^{-q} \equiv 1(\bmod p)
因为 r[1,δp(a)1]r \in [1, \delta_p(a)-1],与阶的最小性矛盾,所以 δp(a)n\delta_p(a) \mid n

推论1
若有 apaq(modm)a^p \equiv a^q(\bmod m),那么有 pq(mod δm(a))p \equiv q (\bmod \ \delta_m(a))

很显然,移项之后有 δm(a)(pq)\delta_m(a) \mid (p - q)

阶的混合运算
如果 gcd(a,m)=1\textbf{gcd}(a, m) = 1,那么下面记 ama \bot m

性质3,设 mN, a,bZm \in \mathbb{N}^{*}, \ a, b \in \mathbb{Z},如果 am,bma \bot m, b \bot m,则
δm(ab)=δm(a)δm(b)\displaystyle \delta_m(ab) = \delta_m(a) \delta_m(b)充分必要条件是
gcd(δm(a),δm(b))=1\displaystyle \textbf{gcd}(\delta_m(a), \delta_m(b)) = 1

必要性,因为 aδm(a)1(mod m)a^{\delta_m(a)} \equiv 1(\bmod \ m) 以及 bδm(b)1(mod m)b^{\delta_m(b)} \equiv 1 (\bmod \ m)
那么 (ab)lcm(δm(a),δm(b))1(mod m)\displaystyle (ab)^{\text{lcm}(\delta_m(a), \delta_m(b))} \equiv 1 (\bmod \ m)
根据阶的性质,我们有 δm(ab)lcm(δm(a),δm(b))\displaystyle \delta_m(ab) \mid \text{lcm}(\delta_m(a), \delta_m(b))
根据条件 δm(ab)=δm(a)δm(b)\delta_m(ab) = \delta_m(a) \delta_m(b),可以知道 δm(a)δm(b)lcm(δm(a),δm(b))\displaystyle \delta_m(a) \delta_m(b) \mid \text{lcm}(\delta_m(a), \delta_m(b))
gcd(δm(a),δm(b))=1\text{gcd}(\delta_m(a), \delta_m(b)) = 1

充分性,我们已知 gcd(δm(a),δm(b))=1\text{gcd}(\delta_m(a), \delta_m(b)) = 1
(ab)δm(ab)1(modm)(ab)^{\delta_m(ab)} \equiv 1(\bmod m) (阶的定义),我们有
1(ab)δm(ab)=1(ab)δm(ab)δm(b)\displaystyle 1 \equiv (ab)^{\delta_m(ab)} = 1 \equiv (ab)^{\delta_m(ab) \delta_m(b)},这一步如果有异议,可以这么看
am,bma\bot m, b\bot m,所以 (ab)m(ab) \bot m,那么 (ab)δm(ab)=km+1(ab)^{\delta_m(ab)} = km + 1,那么 ((ab)δm(ab))p=(1+km)p1(mod m)\displaystyle \left((ab)^{\delta_m(ab)}\right)^p = (1+km)^p \equiv 1 (\bmod \ m)
由此 1(ab)δm(ab)δm(b)aδm(ab)δm(b)(mod m)\displaystyle 1 \equiv (ab)^{\delta_m(ab) \delta_m(b)} \equiv a^{\delta_m(ab) \delta_m(b)} (\bmod \ m)
那么根据性质 2,我们有 δm(a)δm(ab)δm(b)\delta_m(a) \mid \delta_m(ab) \delta_m(b),因为 δm(a)δm(b)\delta_m(a) \bot \delta_m(b),所以我们有
δm(a)δm(ab)\delta_m(a) \mid \delta_m(ab),对称地也有 δm(b)δm(ab)\delta_m(b) \mid \delta_m(ab)
综上所述,我们有 δm(a)δm(b)δm(ab)\delta_m(a) \delta_m(b) \mid \delta_m(ab)
另一方面,我们有 (ab)δm(a)δm(b)(aδm(a))δm(b)(bδm(b))δm(a)1(mod m)(ab)^{\delta_m(a) \delta_m(b)} \equiv \left(a^{\delta_m(a)} \right)^{\delta_m(b)} \cdot \left(b^{\delta_m(b)} \right)^{\delta_m(a)} \equiv 1(\bmod \ m)
所以 δm(ab)δm(a)δm(b)\delta_m(ab) \mid \delta_m(a) \delta_m(b),综上所述 δm(ab)=δm(a)δm(b)\delta_m(ab) = \delta_m(a) \delta_m(b)

性质4
kN,mN, aZk \in \mathbb{N}, m \in \mathbb{N}^{*}, \ a \in \mathbb{Z},如果 (a,m)=1(a, m) = 1,即 ama \bot m,那么

δm(ak)=δm(a)gcd(δm(a),k)\delta_m(a^k) = \frac{ \delta_m(a) }{\text{gcd}(\delta_m(a), k)}

首先,ama \bot m,那么如果 kNk \in \mathbb{N},有 akma^k \bot m,这个之前用 ak=(pm+1)k1(modm)a^k = (pm + 1)^k \equiv 1(\bmod m) 证明过了
注意到 a(kδm(ak))=(ak)δm(ak)1(mod m)\displaystyle a^{(k \cdot \delta_m(a^k))} = \left(a^k \right)^{\delta_m(a^k)} \equiv 1(\bmod \ m)
由此 δm(a)kδm(ak)\delta_m(a) \mid k \delta_m(a^k)
δm(a)gcd(δm(a),k)δm(ak)\Rightarrow \displaystyle \frac{\delta_m(a)}{\text{gcd}(\delta_m(a), k)} \mid \delta_m(a^k)

另一方面,因为 aδm(a)1(modm)a^{\delta_m(a)} \equiv 1 (\bmod m),可以知道

r=kgcd(k,δm(a))\displaystyle r = \frac{k}{\text{gcd}(k, \delta_m(a))},那么 arδm(a)1(modm)\displaystyle a^{r \cdot \delta_m(a)} \equiv 1(\bmod m)

(ak)δm(a)gcd(δm(a),k)=(aδm(a))kgcd(δm(a),k)1(modm)\displaystyle \left(a^k \right)^{\frac{\delta_m(a)}{\text{gcd}(\delta_m(a), k)}} = \left(a^{\delta_m(a)} \right)^{\frac{k}{\text{gcd}(\delta_m(a), k)}} \equiv 1 (\bmod m)

从而有 δm(ak)δm(a)gcd(δm(a),k)\displaystyle \delta_m(a^k) \mid \frac{\delta_m(a)}{\text{gcd}(\delta_m(a), k)},从而 δm(ak)=δm(a)gcd(δm(a),k)\displaystyle \delta_m(a^k) = \frac{\delta_m(a)}{\text{gcd}(\delta_m(a), k)}

原根

mN, aZm \in \mathbb{N}^{*}, \ a \in \mathbb{Z},如果 (a,m)=1(a, m) = 1,并且 δm(a)=φ(m)\delta_m(a) = \varphi(m)
aa 为模 mm 的原根

原根判定定理
假设 m3m \geqslant 3,如果 (a,m)=1(a, m) = 1,则 aa 是模 mm 的原根的充要条件是,对于 φ(m)\varphi(m) 的每个素因子 pp
都有 aφ(m)/p≢1(modm)\displaystyle a^{\varphi(m) / p} \not \equiv 1(\bmod m)

必要性是显然的,否则 φ(m)/p\varphi(m) / p 应该是 aa 在模 mm 意义下的阶了,下面证明充分性
对于 φ(m)\varphi(m) 的每个素因子 pp,都有 aφ(m)/p≢1(modm)a^{\varphi(m) / p} \not \equiv 1 (\bmod m) 成立时,如果有一个 aa
不是模 mm 的原根,那么存在 t<φ(m)t < \varphi(m),使得 at1(modm)a^t \equiv 1(\bmod m)
那么根据 Bézout’s 定理,一定存在 (x,y)(x, y),使得 tx+φ(m)y=gcd(t,φ(m))t \cdot x + \varphi(m) \cdot y = \text{gcd}(t, \varphi(m))
换句话说,我们能找到 (k,x)(k, x),使得 kt=xφ(m)+gcd(t,φ(m))kt = x\varphi(m) + \text{gcd}(t, \varphi(m))
根据 Euler 定理,我们有 aφ(m)1(mod m)\displaystyle a^{\varphi(m)} \equiv 1 (\bmod \ m),所以
1akt=axφ(m)+gcd(t,φ(m))agcd(t,φ(m))(mod m)\displaystyle 1 \equiv a^{kt} = a^{x\varphi(m) + \text{gcd}(t, \varphi(m))} \equiv a^{\text{gcd}(t, \varphi(m))} (\bmod \ m)

因为 gcd(t,φ(m))φ(m)\text{gcd}(t, \varphi(m)) \mid \varphi(m) 并且 gcd(t,φ(m))t<φ(m)\text{gcd}(t, \varphi(m)) \leqslant t < \varphi(m)

根据 gcd(t,φ(m))<φ(m)\text{gcd}(t, \varphi(m)) < \varphi(m),一定存在 φ(m)\varphi(m) 的素因子 pp,使得 gcd(t,φ(m))φ(m)p\displaystyle \text{gcd}(t, \varphi(m)) \mid \frac{\varphi(m)}{p}
aφ(m)/pagcd(t,φ(m))1(modm)a^{\varphi(m) / p} \equiv a^{\text{gcd}(t, \varphi(m))} \equiv 1(\bmod m),与条件矛盾

原根个数
若一个数 mm 有原根,则它的原根个数为 φ(φ(m))\varphi(\varphi(m))

假设 mm 有原根 gg,即 φ(m)=δm(g)\varphi(m) = \delta_m(g),根据性质 4
δm(gk)=δm(g)gcd(δm(g),k)=φ(m)gcd(φ(m),k)\displaystyle \delta_m(g^k) = \frac{\delta_m(g)}{\text{gcd}(\delta_m(g), k)} = \frac{\varphi(m)}{\text{gcd}(\varphi(m), k)}

如果有 gcd(k,φ(m))=1\text{gcd}(k, \varphi(m)) = 1,那么有 δ(gk)=φ(m)\delta_(g^k) = \varphi(m) gkg^k 也是模 mm 的原根
满足 gcd(φ(m),k)=1\text{gcd}(\varphi(m), k) = 1 并且 1kφ(m)1 \leqslant k \leqslant \varphi(m)kk 一共有 φ(φ(m))\varphi(\varphi(m))

原根的判定,比如设 m=7m = 7,求 m=7m = 7 的原根,只要根据判定定理,先算出 φ(7)=6\varphi(7) = 6
然后素因子分解 φ(7)=6=23\varphi(7) = 6 = 2 \cdot 3,如果 aa77 的原根,不妨设 a=3a = 3
那么 336≢1(mod 7)3^3 \equiv 6 \not \equiv 1 (\bmod \ 7)322≢1(mod 7)3^2 \equiv 2 \not \equiv 1 (\bmod \ 7)
所以 3377 的一个原根

原根与简化剩余系
mm 的一个简化剩余系,是 φ(m)\varphi(m) 个整数的一个集合,这些数都对模 mm 互不同余,并且每一个数都和 mm 互素

如果 {a1,a2,,aφ(m)}\{a_1, a_2, \cdots, a_{\varphi(m)}\} 是模 mm 的一个简化剩余系,若 (k,m)=1(k, m) = 1,那么
(ka1,ka2,,kaφ(m))(ka_1, ka_2, \cdots, ka_{\varphi(m)}) 也是模 mm 的一个简化剩余系

原根与简化剩余系定理(a,m)=1(a, m) = 1,则 aa 是模 mm 的一个原根当且仅当
{a,a2,,aφ(m)}\displaystyle \{a, a^2, \cdots, a^{\varphi(m)} \} 成为模 mm 的一个简化剩余系

必要性可以根据阶的性质1,直接得出
充分性,如果 {a,a2,,aφ(m)}\{a, a^2, \cdots, a^{\varphi(m)}\} 是简化剩余系,那么 (a,m)=1(a, m) = 1,又根据 Euler 定理
aφ(m)1(mod m)a^{\varphi(m)} \equiv 1(\bmod \ m),并且这些数互不同余,所以 φ(m)\varphi(m) 是能够找到的最小的幂指 kk
使得 ak1(modm)a^k \equiv 1(\bmod m),根据原根的定义,aa 是原根

原根存在定理
一个数 mm 存在原根,当且仅当 m=2,4,pα,2pαm = 2, 4, p^{\alpha}, 2p^{\alpha},其中 pp奇素数αN\alpha \in \mathbb{N}^{*}

下面分为四部分证明,分别是 m={2,4},{pα},{2pα},m{2,4,pα,2pα}m = \{2, 4\}, \{p^{\alpha}\}, \{2p^{\alpha}\}, m \notin \{2, 4, p^{\alpha}, 2p^{\alpha}\}

m=2,4m = 2, 4,对于 m=2m = 211 是它的原根,对于 m=4m = 4φ(4)=2\varphi(4) = 23φ(4)/23≢1(mod4)3^{\varphi(4)/2} \equiv 3 \not \equiv 1 (\bmod 4)33 是一个原根
或者可以用定义证明,32=3φ(4)1(mod4)3^2 = 3^{\varphi(4)} \equiv 1 (\bmod 4),并且没有更小的幂指 tt 使得 3t1(mod4)3^t \equiv 1(\bmod 4)

以下用 (a,p)=1(a, p) = 1 表示 a,pa, p 互素

定理1,对于奇素数 pppp 有原根
引理1,假设 (a,p)=1,(b,p)=1(a, p) = 1, (b, p) = 1,存在 cZc \in \mathbb{Z},使得 δp(c)=lcm(δp(a),δp(b))\delta_p(c) = \text{lcm}(\delta_p(a), \delta_p(b))
证明如下,先对 δm(a),δm(b)\delta_m(a), \delta_m(b) 唯一分解,这里用 mpm \leftarrow p

δm(a)=i=1kpiαi,δm(b)=i=1kpiβi\displaystyle \delta_m(a) = \prod_{i = 1}^{k} p_i^{\alpha_i}, \quad \delta_m(b) = \prod_{i = 1}^{k} p_i^{\beta_i}
δm(a)=XY, δm(b)=ZW\displaystyle \delta_m(a) = XY, \ \delta_m(b) = ZW,其中

Y=i=1kpi[αi>βi]αi,X=δm(a)Y\displaystyle Y = \prod_{i = 1}^{k} p_i^{[\alpha_i > \beta_i] \alpha_i}, \quad X = \frac{\delta_m(a)}{Y}

W=i=1kpi[αiβi]βi,Z=δm(b)W\displaystyle W = \prod_{i = 1}^{k} p_i^{[\alpha_i \leqslant \beta_i] \beta_i}, \quad Z = \frac{\delta_m(b)}{W}

通俗一点说,我们把 δm(a),δm(b)\delta_m(a), \delta_m(b) 出现的所有素因子统计出来 {p1,p2,,pk}\{p_1, p_2, \cdots, p_k\}
对于每一个素因子 pip_i,如果它在 δm(a)\delta_m(a) 中出现的幂指比 δm(b)\delta_m(b) 中的大,就把它放到 YY 中,否则放到 WW
如果因子 pip_iδm(a)\delta_m(a) 中没有出现,它的幂指看作是 00
这样显然有 gcd(Y,W)=1\text{gcd}(Y, W) = 1lcm(δm(a),δm(b))=lcm(Y,W)\text{lcm}(\delta_m(a), \delta_m(b)) = \text{lcm}(Y, W)

根据阶的性质4δm(aX)=δm(a)gcd(δm(a),X)=XYX=Y\displaystyle \delta_m(a^{X}) = \frac{\delta_m(a)}{\text{gcd}(\delta_m(a), X)} = \frac{XY}{X} = Y

同理,δm(bZ)=W\displaystyle \delta_m(b^Z) = W,又因为 (Y,W)=1(Y, W) = 1,所以
YW=lcm(Y,W)=lcm(δm(a),δm(b))YW = \text{lcm}(Y, W) = \text{lcm} \left(\delta_m(a), \delta_m(b) \right)

另一方面,(a,m)=1(a, m) = 1,所以 (ak,m)=1(a^k, m) = 1,否则就可以找到 pap \mid a,与 (a,m)=1(a, m) = 1 矛盾

根据阶的性质3δm(aXbZ)=δm(aX)δm(bZ)=YM=lcm(δm(a),δm(b))\displaystyle \delta_m(a^Xb^Z) = \delta_m(a^X) \delta_m(b^Z) = YM = \text{lcm}(\delta_m(a), \delta_m(b))
c=aXbZc = a^Xb^Z,证毕

接下来回到原问题
对于素数 pp{1,2,,p1}\{1, 2, \cdots, p-1\} 均与 pp 互素,对 φ(p)\varphi(p) 个数两两使用引理,我们可以找到一个 gZg \in \mathbb{Z}
使得 δp(g)=lcm(δp(1),δp(2),,δp(p1))\delta_p(g) = \textbf{lcm}(\delta_p(1), \delta_p(2), \cdots, \delta_p(p-1)),说明对任意的 j{1,2,,p1}j \in \{1, 2, \cdots, p-1\}
δp(j)δp(g)\delta_p(j) \mid \delta_p(g)

研究二项同余式 xδp(g)1(mod p)\displaystyle x^{\delta_p(g)} \equiv 1 (\bmod \ p)
根据阶的性质2,对于二项同余式 xδp(g)1(mod p)x^{\delta_p(g)} \equiv 1(\bmod \ p),有 δp(x)δp(g)\delta_p(x) \mid \delta_p(g)
也就是说,x=j={1,2,,p1}x = j = \{1, 2, \cdots, p-1\} 都是同余式的根
根据拉格朗日定理,有 p1p-1 个根,那么多项式的幂指 δp(g)p1\delta_p(g) \geqslant p-1

再根据Fermat定理pp 是素数并且 pxp \nmid x,那么 xp11(mod p)x^{p-1} \equiv 1(\bmod \ p)
满足 pxp \nmid x,也就是说 (xmodp){1,2,,p1}(x \bmod p) \in \{1, 2, \cdots, p-1\},根据 modp\bmod p 的余数进行分类
xx 可以有 p1p-1 类取值,我们说同余方程 xp11(modp)x^{p-1} \equiv 1 (\bmod p)p1p-1 个根
回到本问题,用Fermat定理表述为,xδp(g)1(mod p)\displaystyle x^{\delta_p(g)} \equiv 1(\bmod \ p)
δp(g)=p1\delta_p(g) = p-1 时恰有它全部的根,而本问题之前已经找出了 {1,2,,p1}\{1, 2, \cdots, p-1\} 个根
也许还有其他的根,所以 δp(g)p1\delta_p(g) \leqslant p-1

综上所述,δp(g)=p1=φ(p)\delta_p(g) = p-1 = \varphi(p)gg 为模 pp 的原根,证毕

定理2,对于奇素数 ppαN\alpha \in \mathbb{N}^{*}pαp^{\alpha} 有原根
证明的想法是,将模 pp 的原根平移
引理2,存在模 pp 的原根 gg,使得 gp1≢1(mod p2)g^{p-1} \not \equiv 1(\bmod \ p^2)
证明,任取模 pp 的原根,如果发现 gp11(modp2)g^{p-1} \equiv 1(\bmod p^2) 不满足条件,就让 g=g+pg = g+p
{g,g2,gφ(p)}\{g, g^2, \cdots g^{\varphi(p)}\} 取遍 pp 的简化剩余系,同样 {g+p,,(g+p)φ(p)}\{g+p, \cdots, (g+p)^{\varphi(p)}\} 也取遍简化剩余系
因为 (g+p)kg(modp)(g+p)^k \equiv g(\bmod p),所以有 (g+p)(g+p) 也是模 pp 的原根

(g+p)p1(p10)gp1+(p11)pgp2\displaystyle (g+p)^{p-1} \equiv \binom{p-1}{0} g^{p-1} + \binom{p-1}{1} pg^{p-2}
gp1+p(p1)gp21pgp2(modp2)\displaystyle \quad \equiv g^{p-1} + p(p-1)g^{p-2} \equiv 1-pg^{p-2} (\bmod p^2),因为 pgp2≢0(modp2)pg^{p-2} \not \equiv 0 (\bmod p^2)
所以有 (g+p)p1≢1(modp2)(g+p)^{p-1} \not \equiv 1(\bmod p^2)

证明,如果 gg 是满足 gp1≢1(mod p2)g^{p-1} \not \equiv 1(\bmod \ p^2)原根,那么对于任意 α1\alpha \geqslant 1gg 也是模 pαp^{\alpha} 的原根
假设 ttgg 的阶 (mod pα)(\bmod \ p^{\alpha}),即令 t=δpα(g)t = \delta_{p^{\alpha}}(g),我们希望证明 t=φ(pα)t = \varphi(p^{\alpha})
(1) 首先有 gt1(mod pα)g^t \equiv 1 (\bmod \ p^{\alpha}),这是根据阶的定义
(2) 另外,gt=kpα+1g^{t} = kp^{\alpha} + 1,我们也有 gt1(modp)g^{t} \equiv 1(\bmod p)
(3) gφ(p)1(modp)g^{\varphi(p)} \equiv 1 (\bmod p) 成立,gkφ(p)1(modp)g^{k \varphi(p)} \equiv 1 (\bmod p) 恒成立,换句话说,t=kφ(p)t = k \cdot \varphi(p)
(4) 根据阶的性质2,因为 tt 是关于 (modpα)(\bmod p^{\alpha}) 的阶,所以 tφ(pα)t \mid \varphi(p^{\alpha})
综上所述,kφ(p)φ(pα)k\varphi(p) \mid \varphi(p^{\alpha}),但是 φ(pα)=pα1(p1), φ(p)=p1\varphi(p^{\alpha}) = p^{\alpha - 1}(p-1), \ \varphi(p) = p-1
(5) 可以推出 kpα1k \mid p^{\alpha - 1},换句话说,k=pβ, βα1k = p^{\beta}, \ \beta \leqslant \alpha - 1
这样,(3) 就可以写成 t=pβ(p1), βα1t = p^{\beta}(p-1), \ \beta \leqslant \alpha - 1
只需要证明 β=α1\beta = \alpha - 1 即可,等价于对于 βα2\beta \leqslant \alpha - 2以下推出的一些结论都不成立
如果有 βα2\beta \leqslant \alpha - 2,那么 t=pβ(p1)pα2(p1)=φ(pα1)t = p^{\beta}(p-1) \mid p^{\alpha-2}(p-1) = \varphi(p^{\alpha - 1})
如果假设成立,我们有 φ(pα1)\varphi(p^{\alpha - 1})tt 的倍数,tt 又是 gg 的阶 (modpα)(\bmod p^{\alpha}),所以有
gφ(pα1)1(mod pα)g^{\varphi(p^{\alpha - 1})} \equiv 1(\bmod \ p^{\alpha}),接下来只要证明这个结论不成立即可

引理3,如果 gg 是模 pp 的一个原根使得 gp1≢1(mod p2)g^{p-1} \not \equiv 1(\bmod \ p^2),那么对于 α2\alpha \geqslant 2,都有
gφ(pα1)≢1(mod pα)\displaystyle g^{\varphi \left(p^{\alpha - 1} \right)} \not \equiv 1(\bmod \ p^{\alpha})
这里对 α\alpha 归纳,考虑 (mod pα+1)(\bmod \ p^{\alpha+1}) 时候的情形
显然 α=2\alpha = 2 时成立,先根据 Fermat-Euler 定理,有 gφ(pα1)1(mod pα1)g^{\varphi \left(p^{\alpha - 1} \right)} \equiv 1 (\bmod \ p^{\alpha - 1}) 恒成立
(1) 写成一般形式,gφ(pα1)=1+kpα1g^{\varphi \left(p^{\alpha - 1} \right)} = 1 + k p^{\alpha - 1},根据归纳,gφ(pα1)≢1(mod pα)\displaystyle g^{\varphi \left(p^{\alpha - 1} \right)} \not \equiv 1(\bmod \ p^{\alpha})
可以推出 pkp \nmid k
(2) 将 (1) 中两边同时 pp 次方,pφ(pα1)=φ(pα)p \varphi(p^{\alpha - 1}) = \varphi(p^{\alpha}),我们有

gφ(pα)=(1+kpα1)p=1+kpα+(p2)k2p2(α1)+rp3(α1)+\displaystyle g^{\varphi \left(p^{\alpha} \right)} = (1+kp^{\alpha - 1})^p = 1 + kp^{\alpha} + \binom{p}{2}k^2 p^{2(\alpha - 1)} + r p^{3(\alpha - 1)} + \cdots

注意到 α2\alpha \geqslant 2,那么 2α1α+1, 3α3α+12\alpha - 1 \geqslant \alpha + 1, \ 3\alpha - 3 \geqslant \alpha + 1,往后的项 pp 的幂指都比 α+1\alpha + 1
gφ(pα)1+kpα(mod pα+1)\displaystyle g^{\varphi \left(p^{\alpha} \right)} \equiv 1 + kp^{\alpha} (\bmod \ p^{\alpha + 1})
因为 pkp \nmid k,所以 kpα≢0(modpα+1)kp^{\alpha} \not \equiv 0 (\bmod p^{\alpha + 1}),从而 gφ(pα)≢1(mod pα+1)\displaystyle g^{\varphi(p^{\alpha})} \not \equiv 1(\bmod \ p^{\alpha +1}),归纳成立

pαp^{\alpha} 原根存在定理
如果 gg 是模 pp 的一个原根,那么对于所有 α1\alpha \geqslant 1gg 也是模 pαp^{\alpha} 的原根当且仅当 gp1≢1(mod p2)g^{p-1} \not \equiv 1(\bmod \ p^2)

2pα2p^{\alpha} 原根存在定理
如果 pp 是一个奇素数并且 α1\alpha \geqslant 1,那么存在模 pαp^{\alpha} 的一个奇数原根 gg
并且每一个这样的 gg 也是模 2pα2p^{\alpha} 的原根

(1) 如果 gg 是模 pαp^{\alpha} 的一个原根,那么 g+pαg + p^{\alpha} 也是模 pαp^{\alpha} 的一个原根
但是 g,g+pαg, g+p^{\alpha} 其中一个一定是奇数,所以模 pαp^{\alpha} 的奇数原根总是存在的
(2) 不妨设模 pαp^{\alpha} 的一个奇数原根gg,并且 gg 的阶是 f (mod 2pα)f \ (\bmod \ 2p^{\alpha}) (关于模 (2pα)(2p^{\alpha}) 的阶)
我们只需要证明 f=φ(2pα)f = \varphi(2p^{\alpha})
(3) 首先根据阶的性质,有 fφ(2pα)f \mid \varphi(2p^{\alpha}),根据不完全积性,φ(2pα)=φ(2)φ(pα)=φ(pα)\varphi(2p^{\alpha}) = \varphi(2) \varphi(p^{\alpha}) = \varphi(p^{\alpha})
首先有 fφ(pα)f \mid \varphi(p^{\alpha})
(4) 另一方面,根据阶的定义,gf1(mod 2pα)g^{f} \equiv 1 (\bmod \ 2p^{\alpha}),又可以推出 gf1(mod pα)g^{f} \equiv 1 (\bmod \ p^{\alpha})
gg 首先是模 pαp^{\alpha} 的一个原根,所以 gφ(pα)1(mod pα)g^{\varphi(p^{\alpha})} \equiv 1 (\bmod \ p^{\alpha}),从而 φ(pα)f\varphi(p^{\alpha}) \mid f
综上所述,f=φ(pα)=φ(2pα)f = \varphi(p^{\alpha}) = \varphi(2p^{\alpha})

其他情况原根不存在
原根不存在定理 给定 m1m\geqslant 1mm 的形式不是 {1,2,4,pα,2pα}\{1, 2, 4, p^{\alpha}, 2p^{\alpha}\},其中 pp 是一个奇素数
则对于任意一个满足 (a,m)=1(a, m) = 1aa,我们有 aφ(m)21(mod m)\displaystyle a^{\frac{ \varphi(m) } {2}} \equiv 1 (\bmod \ m)
mm 没有原根

先来证明 α3\alpha \geqslant 3 时,模 2α2^{\alpha} 没有原根,只要证明 xφ(2α)/21(mod 2α),x\displaystyle x^{\varphi(2^{\alpha}) / 2} \equiv 1 (\bmod \ 2^{\alpha}), x 为奇数
也就是 φ(8)=2322=4\varphi(8) = 2^3 - 2^2 = 4x21(mod 8)x^2 \equiv 1 (\bmod \ 8),这是成立的,因为 (2k+1)2=4k(k+1)+1(2k + 1)^2 = 4k(k+1) + 1
k(k+1)k(k+1) 一定是偶数,所以 x2=(2k+1)21(mod8)x^2 = (2k+1)^2 \equiv 1 (\bmod 8)

解下来对 α\alpha 归纳,归纳假设有 f(x)=xφ(2α)=(1+2αt)2=1+2α+1t+22αt2\displaystyle f(x) = x^{\varphi(2^{\alpha})} = (1+2^{\alpha}\cdot t)^2 = 1 + 2^{\alpha+1}t + 2^{2\alpha}t^2
因为 2αα+12\alpha \geqslant \alpha + 1,所以 f(x)1(mod2α+1)f(x) \equiv 1 (\bmod 2^{\alpha+1}),而 xφ(2α)=xφ(2α+1)/2x^{\varphi(2^{\alpha})} = x^{\varphi(2^{\alpha + 1}) / 2},归纳假设成立

接下来考虑一般情况,设 m=2αp1α1p2α2psαs\displaystyle m = 2^{\alpha} p_1^{\alpha_1} p_2^{\alpha_2} \cdots p_s^{\alpha_s}

根据条件,s=1s = 1 时,α2\displaystyle \alpha \geqslant 2,另外 α={0,1}\alpha = \{0, 1\} 时,s2s \geqslant 2
φ(m)=φ(2α)φ(p1α1)φ(p2α2)φ(psαs)\displaystyle \varphi(m) = \varphi(2^{\alpha}) \varphi(p_1^{\alpha_1}) \varphi(p_2^{\alpha_2}) \cdots \varphi(p_s^{\alpha_s})

我们希望证明 对于 (a,m)=1(a, m) = 1,有 aφ(m)/21(modm)\displaystyle a^{\varphi(m) / 2} \equiv 1 (\bmod m)

考虑模 p1α1p_1^{\alpha_1},取其原根 gg,即 gφ(p1α1)1(mod p1α1)g^{\varphi(p_1^{\alpha_1})} \equiv 1(\bmod \ p_1^{\alpha_1})
因为 gg 是原根,<g,g2,,gφ(p1α1)>\left<g, g^2, \cdots, g^{\varphi(p_1^{\alpha_1})} \right> 取遍 p1α1p_1^{\alpha_1} 的简化剩余系
所以存在 gka(modp1α1),(1ap1α11)g^{k} \equiv a (\bmod p_1^{\alpha_1}), \quad (1 \leqslant a \leqslant p_1^{\alpha_1} - 1)

aφ(m)/2gkφ(m)/2gtφ(p1α1)(mod p1α1)\displaystyle a^{\varphi(m) / 2} \equiv g^{k\varphi(m) / 2} \equiv g^{t\varphi(p_1^{\alpha_1})} (\bmod \ p_1^{\alpha_1})

其中 t=kφ(2α)φ(p1α1)φ(p2α2)φ(psαs)2\displaystyle t = k \varphi(2^{\alpha}) \varphi(p_1^{\alpha_1}) \varphi(p_2^{\alpha_2}) \cdots \frac{\varphi(p_s^{\alpha_s}) } {2}

如果 α2\alpha \geqslant 2,那么 φ(2α)\varphi(2^{\alpha}) 是偶数,tZt \in \mathbb{Z}
如果 α={0,1}\alpha = \{0, 1\},那么 s2s \geqslant 2φ(p2α2)\varphi(p_2^{\alpha_2}) 是偶数,tZt \in \mathbb{Z}

所以可以得到 gtφ(p1α1)1(modp1α1)g^{t \cdot \varphi(p_1^{\alpha_1})} \equiv 1(\bmod p_1^{\alpha_1}),因为 gg 是原根
对其他 pip_i 同理,所以有 aφ(m)/21(mod piαi)\displaystyle a^{\varphi(m)/2} \equiv 1 (\bmod \ p_i^{\alpha_i})

下面只需要证明这个同余式对模 2α2^{\alpha} 成立即可,因为要求 (a,m)=1(a, m) = 1,所以对模 2α2^{\alpha},要求 aa 为奇数
aφ(2α)1(mod 2α)\displaystyle a^{\varphi(2^{\alpha})} \equiv 1(\bmod \ 2^{\alpha}),这个在第一种情况时候已经证明过了,要求 α3\alpha \geqslant 3
又因为 φ(2α)φ(m)\varphi(2^{\alpha}) \mid \varphi(m),所以 aφ(m)/21(mod 2α)a^{\varphi(m) / 2} \equiv 1 (\bmod \ 2^{\alpha}),此时 α3\alpha \geqslant 3
α2\alpha \leqslant 2,我们有 s1s \geqslant 1,所以此时 φ(m)=φ(2α)φ(p1α1)φ(psαs)=2kφ(2α)\varphi(m) = \varphi(2^{\alpha})\varphi(p_1^{\alpha_1}) \cdots \varphi(p_s^{\alpha_s}) = 2k \cdot \varphi(2^{\alpha})
此时仍然有 φ(2α)φ(m)/2\varphi(2^{\alpha}) \mid \varphi(m) / 2

综上所述,将结果全部乘起来,证明完毕

比赛杂题

Educational Codeforces Round 123 (Rated for Div. 2)
C.Increase Subarray Sums

题目大意,给定一个数组 <a>\left<a \right>f(k)f(k) 表示你可以在数组 aa 中任意取 kk不同位置,把这些位置上的数都加上 xx
修改完成后,<a>\left<a \right>连续一段和的最大值记为 f(k)f(k)
输出 <f(0),f(1),,f(n)>\left< f(0), f(1), \cdots, f(n) \right>,注意长度为 00 的子数组也算一部分

根据数据范围,O(n2)O(n^2) 复杂度的算法就可以通过

  • 先预处理出长度为 len=[1,2,,n]len = [1, 2, \cdots, n] 的连续子段,它们的和的最大值,记为 maxsum(len)\text{maxsum}(len)
  • 然后考虑修改 ii 个数,i[0n]i \in [0\cdots n],记修改 ii 个数得到的最大子段和为 ans(i)\text{ans}(i)
    22 种情况,第一种,有一个很长的段 (len>i)(len > i),它的子段和很大,那么我们肯定要从 lenlen 个数中,随便选 ii 个修改
    修改后的最大子段和,就是 maxsum(len)+ix\text{maxsum}(len) + i \cdot x
    第二种就是,有可能最大子段和,出现在很小的一段 (len<i)(len < i) 中,那么这 lenlen 个数,肯定是需要修改的
    最大子段和为 S=maxsum(len)+lenxS = \text{maxsum}(len) + len \cdot x,还需要修改 ileni - len 个数,怎么办
    实际上这剩下的 ileni - len 个数可以在其他位置任意修改,不影响已经得到的最大子段和 SS
  • 因为长度为 lenlen 的段 [l,r][l, r] 已经是原来的最大子段和了,如果 len<ilen < i,那么你选 ii 个数都增加 xx
    相当于在原来的图像上,这些数同时往上平移 xx[l,r][l, r] 仍然还是最大值

综上所述,我们只要枚举要修改的个数 i<0,1,n>i \in \left<0, 1, \cdots n \right>,同时枚举可能取到最大子段和的区间长度
len[1,n]\text{len} \in [1, n]ans(i)=max(maxsum(len)+xmin(i,len))\text{ans}(i) = \max(\text{maxsum}(len) + x \cdot \min(i, len))

D. Cross Coloring

题目大意,给你一个 n×mn \times m 的棋盘,qq 次操作,每次给你 (x,y)(x, y),你可以把 xxyy 列都染上 kk 种颜色中的任何一种
每一次染色,都会覆盖之前的颜色,问 qq 次操作之后,最终在棋盘中,有几种不同的颜色

这种问题,首先考虑什么时候,存在某一个格子 (a,b)(a, b),它能够被染上 [1k][1\cdots k] 中任意一种颜色,即 (k1)\displaystyle \binom{k}{1}
满足这种条件的格子,可以把它看成是自由的

自由格子 (a,b)(a, b) 出现的充要条件如下
假设 (a,b)(a, b) 在第 ii第一次被染色,那么它在之后的 [i+1n][i+1\cdots n] 次染色中,都不会被覆盖
换句话说,如果第 ii 次染色,存在至少一个自由格子,那么答案 ansans(k1)\displaystyle ans \leftarrow ans \cdot \binom{k}{1}

直接做比较麻烦,先考虑简单情况,对于最后一次操作,即第 qq 次,它可以选 (k1)\displaystyle\binom{k}{1} 的任意一种颜色
这些颜色都会出现在棋盘上,有 kk 种,接下来考虑第 q1q-1 次操作
q1q-1 次操作染色的格子中,与第 qq 次操作重合的那些格子,不需要重复统计
其他格子呢?同样可以选 (k1)\displaystyle\binom{k}{1} 的任意一种

经过这样分析,我们可以从 i[q1]i \in [q\to 1] 反着来遍历
每一次操作的时候,都标记一下它覆盖了哪些格子,不妨设当前进行第 ii 次操作
ii 次染色 xxyy 列的时候,对于之前的 [i+1,i+2,q][i+1, i+2, \cdots q] 操作已经标记过的格子,我们不做统计
如果能找到一个未标记的格子,那么它可以涂 (k1)\displaystyle \binom{k}{1} 的任意一种颜色
将其统计到答案中,ansans(k1)\displaystyle ans \leftarrow ans \cdot \binom{k}{1}

算法实现就比较简单了,假设第 ii 次操作 (x,y)(x, y),如果 xx 行之前没有操作过
并且至少存在一列未被标记,或者对称地, yy 列没有被操作过,至少存在一行未被标记,那么就对答案有 (k1)\displaystyle \binom{k}{1} 的贡献