单位根反演
单位根,一个耳熟能详的东西。
单位根 \(\omega_n\) 定义为,\(x^n=1\) 的解中,不等于 \(1\),辐角最小的那个。
然后 \(w_n\) 的 \(0...n-1\) 次幂,正好可以遍历 \(x^n=1\) 的所有解。
然后 \(\omega_n\) 有一些有趣的性质
-
幂可以模 \(n\)
显然,因为 \(n\) 次幂相当于向量转一圈,然后转了个寂寞,所以可以随便的增加 / 减少
-
\(\dfrac{n}{2}\) 次幂相当于取负
显然,转半圈转到对面去
这两个性质很显然,但您想必已经明白了它的妙处:它的幂,就相当于在转
单位复根转转转
然后它就可以用来解决一些,与倍数有关的问题 —— 可以把一个倍数的限制条件转化成幂
反演式
\(\sum\limits_{i=0}^{n-1} (\omega_n^k)^i=n\times [n|k]\)
这本质是一个等比数列求和。右边会出现一个条件判断,是因为等比数列求和要分公比是否为 \(1\) 来讨论。
然后就讨论一下 \(\omega_n^k\) 是否为 \(1\),就可以证明了
用的时候可以把 \(n\) 移到左边去,然后单独转化一个 \([n|k]\)
千万别忘了除掉那个 \(n\)
顺便再提一嘴,用的时候一般还会带一个组合数,然后变成二项式定理的形式
例题
loj 6247
非常板子
先变成 \(\sum\limits_{i=0}^{n} [k|i] \binom{n}{i}\)
然后把整除换成单位根反演式子,交换一下求和符号,二项式定理
然后 \(k\) 是 \(2^{20}\) 级别。直接做。
小小总结一下
单位根反演,其实就是把一个漂亮的求和,加上一个倍数的限制
然后这时候可以利用单位根的转转转,把倍数换成原来完整的求和
loj 6485
又是一个组合数套一个幂再套一个倍数
这里稍微一点变化是,我们先枚举 %4 余多少,假设是 \(k\) ,然后去算贡献,完了乘以 \(a_k\)
换句话说就是算 \(a[0,1,2,3]\) 分别是多少系数
式子略
bzoj 3328
还是老套路,这个枚举倍数在做数论函数题的时候见惯了
直接变成
其中 \(F_i\) 是斐波那契
然后这里又有组合数,按套路,要找一个幂来
斐波那契,幂...矩阵快速幂!
设
然后 \(F_n\) 就是 \(A^n\) 的左上角。这里我们先把矩阵搞出来,最后一步再取左上角。
答案的矩阵
其中 \(I\) 是单位矩阵
然后发现 \(k\) 很小,直接做
思考:题目中的 \(p\equiv 1\pmod{k}\) 是做甚么用的?