Daniel_yuan's Blog

芙卡米天下第一可爱 n(*≧▽≦*)n

0%

单位根反演学习笔记

以下等式被称作单位根反演:

\[ [n|k]=\frac{1}{n}\sum_{i=0}^{n-1}\omega_n^{ik} \] 其中 \(\omega_n\) 表示在所求域内的 \(n\) 次单位根。\(n\) 次单位根的定义是,若 \(\omega_n\)\(n\) 次单位根当且仅当 \(\omega_n^0,\omega_n^1...\omega_n^{n-1}\) 互不相同,且 \(\omega_n^0=\omega_n^n\)。一般来说所求域会是模大质数 \(P\) 的同余域,所以若设 \(g\)\(P\) 的原根,那么在该域下,\(n\) 次单位根为 \(g^{\frac{P-1}{n}}\)

关于单位根,有个比较显然的等式,即 \(\omega_n^k=\omega_n^{k\text{ mod }n}\)

基于上面的等式,就有了一种单位根反演证明方法:

  1. \([n|k]\) 那么 \(\omega_n^{ik}=1\),所以右边的式子算出来就是 \(1\)
  2. 反之,\(\sum_{i=0}^{n-1}\omega_n^{ik}=\sum_{i=0}^{n-1}(\omega_n^k)^i=\frac{1-\omega_n^n}{1-\omega_n^k}\),因为前提,分母一定不是 \(0\),而分子为 \(0\),所以整体为 \(0\)

故得证。


虽然单位根反演看上去特别简单,但是在用的时候其实很难把一个式子和单位根反演联系起来,这就需要多加练习。

举个栗子:LOJ #6485 LJJ 学二项式定理\[ \begin{aligned} &\sum_{i=0}^n{n \choose i}s^ia_{i\text{ mod }4}\\ =&\sum_{i=0}^n{n\choose i}s^i\sum_{j=0}^3[4|i-j]a_j\\ =&\sum_{i=0}^n{n\choose i}s^i\sum_{j=0}^3a_j\frac{1}{4}\sum_{k=0}^3\omega_4^{(i-j)k}\\ =&\frac{1}{4}\sum_{j=0}^3a_j\sum_{k=0}^3\sum_{i=0}^n{n\choose i}s^i\omega_4^{ik-jk}\\ =&\frac{1}{4}\sum_{j=0}^3a_j\sum_{k=0}^3\omega_4^{-jk}\sum_{i=0}^n{n\choose i}s^i\omega_4^{ik}\\ =&\frac{1}{4}\sum_{j=0}^3a_j\sum_{k=0}^3\omega_4^{-jk}(1+s\omega_4^k)^n \end{aligned} \] 当然,直接看推式子的话,这道题就浪费了,所以接下来梳理一下解题思路。

首先直接求和肯定是不好求的,因为后面的下标取模非常麻烦,但是我们可以把后面的模枚举出来,就有了第一步。

之后直接套用单位根反演,并且可以发现组合数和 \(s^i\) 很像二项式定理,所以对单位根的指数进行一些分裂等处理,使得所有和 \(i\) 有关的项全部被分离,并且把带 \(i\) 的项通过二项式定理合并。

最后就只需要模拟求和式了,复杂度 \(O(9\times \log n)\)


其实很多单位根反演都是把模或者除之类的算术暴力展开,得到一个符合单位根反演的式子之后直接反演,然后通过对单位根指数的分裂与合并,把单位根的各项分配到合适的地方去,之后就通过一些数学方法合并一些式子,使得求和式变得简单。