单位根反演

单位根反演

就是下面这个式子:
[ n ∣ k ] = 1 n ∑ i = 0 n − 1 w n i k [n|k]=\frac{1}{n}\sum_{i=0}^{n-1} w_n^{ik} [nk]=n1i=0n1wnik
证明:

  • n ∣ k n|k nk 时, w n i k = 1 w_n^{ik}=1 wnik=1,原式成立。
  • n ∤ k n\not{|}k nk 时,原式等于 1 n ⋅ 1 − w n k 1 − w k = 0 \frac{1}{n}\cdot \frac{1-w^{nk}}{1-w^k}=0 n11wk1wnk=0

应用

求一个多项式 f ( x ) f(x) f(x) 次数为 d d d 的倍数的系数和,其中需满足存在 d d d 次单位根 w d w_{d} wd

f ( x ) = ∑ i = 0 n a i x i f(x)=\sum_{i=0}^n a_ix^i f(x)=i=0naixi,那么:
∑ i = 0 n [ d ∣ i ] a i = ∑ i = 0 n a i 1 d ∑ j = 0 d − 1 w d i j = 1 d ∑ j = 0 d − 1 ∑ i = 0 n a i w d i j = 1 d ∑ j = 0 d − 1 f ( w d j ) \begin{aligned} &\sum_{i=0}^n [d|i]a_i\\ =&\sum_{i=0}^na_i\frac{1}{d}\sum_{j=0}^{d-1}w_d^{ij}\\ =&\frac{1}{d}\sum_{j=0}^{d-1}\sum_{i=0}^na_iw_d^{ij}\\ =&\frac{1}{d}\sum_{j=0}^{d-1}f(w_{d}^j) \end{aligned} ===i=0n[di]aii=0naid1j=0d1wdijd1j=0d1i=0naiwdijd1j=0d1f(wdj)
于是如果求 f ( x ) f(x) f(x) 的时间复杂度为 O ( t ) O(t) O(t),那么就能在 O ( d t ) O(dt) O(dt) 的时间复杂度内解决这个问题。

所以一般应用于 d d d 为较小的定值,以及 f ( x ) f(x) f(x) 有良好的实际意义(能快速求)的情况。

当然把条件变成模 d d d r r r 也是可以的,只需要将多项式平移即可。

把多项式换成数列也是可以的,只需要把数列换成其生成函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值