ZigZagK的博客
单位根反演
2020年12月15日 20:47
查看标签

单位根性质

单位根一个神奇的性质:

$$ {1\over k}\sum_{i=0}^{k-1}\omega_{k}^{ni}=[k\mid n] $$

证明:

  • 当 $k\mid n$ 时:

    $$ {1\over k}\sum_{i=0}^{k-1}\omega_{k}^{ni}={1\over k}\sum_{i=0}^{k-1}\omega_{k}^0=1 $$

  • 当 $k\not\mid n$ 时:

    $$ {1\over k}\sum_{i=0}^{k-1}\omega_{k}^{ni}={1\over k}\cdot{\omega_{k}^{0}(1-\omega_{k}^{nk})\over 1-\omega_{k}^{n}}=0 $$

单位根反演

用这个可以求出生成函数 $k$ 的倍数位置上的系数的和:

$$ f(x)=\sum_{i}a_ix^i\\ \sum_{k\mid i}a_i=\sum_{i}a_i[k\mid i]={1\over k}\sum_{i}a_i\sum_{j=0}^{k-1}\omega_{k}^{ij}={1\over k}\sum_{j=0}^{k-1}\sum_{i}a_i(\omega_{k}^{j})^i={1\over k}\sum_{j=0}^{k-1}f(\omega_{k}^{j}) $$

扩展

如果要求 $\sum_{i}a_i[i\bmod k=r]$ 咋办?

其实只需要把 $f(x)$ 向左移动 $r$ 个就行了:$f(x)\over x^r$ 。

$$ \sum_{i}a_i[i\bmod k=r]={1\over k}\sum_{j=0}^{k-1}{f(\omega_{k}^{j})\over\omega_{k}^{jr}} $$

例题

LOJ6485 LJJ 学二项式定理

转化为求:

$$ \sum_{k=0}^{3}a_k\sum_{i=0}^{n}{n\choose i}s^i[k\mid i] $$

我们把 ${n\choose i}s^i$ 看成系数,构造 $f(x)=\sum_{i=0}^{n}{n\choose i}s^ix^i=(sx+1)^n$ ,那么:

$$ \sum_{r=0}^{3}a_r\sum_{i=0}^{n}{n\choose i}s^i[i\bmod 4=r]={1\over 4}\sum_{r=0}^{3}a_r\sum_{j=0}^{3}{f(\omega_{4}^{j})\over\omega_{4}^{jr}} $$

由于是在模意义下,同NTT一样,我们把单位根改成原根就行了。

#include<cstdio>
using namespace std;
typedef long long LL;
const int MOD=998244353,inv4=748683265;

int te,S,a[4],w[4],inv[4],ans;LL n;

#define ADD(x,y) (((x)+(y))%MOD)
#define MUL(x,y) ((LL)(x)*(y)%MOD)
int Pow(int w,LL b) {int s=1;while (b) {if (b&1) s=MUL(s,w);w=MUL(w,w);b>>=1;}return s;}
int main(){
    w[0]=1;w[1]=Pow(3,(MOD-1)/4);w[2]=MUL(w[1],w[1]);w[3]=MUL(w[2],w[1]);
    for (int i=0;i<4;i++) inv[i]=Pow(w[i],MOD-2);
    for (scanf("%d",&te);te;te--){
        scanf("%lld%d",&n,&S);for (int i=0;i<4;i++) scanf("%d",&a[i]);
        ans=0;
        for (int i=0;i<4;i++){
            int F=0;for (int j=0;j<4;j++) F=ADD(F,MUL(Pow(MUL(S,w[j])+1,n),inv[i*j%4]));
            ans=ADD(ans,MUL(a[i],MUL(F,inv4)));
        }
        printf("%d\n",ans);
    }
    return 0;
}
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
请不要发毫无意义或内容不文明的评论。与本文无关评论请发留言板!
Node Sans
2020-12-15 23:25:12Node Sans
2020-12-15 23:25:12

又是我看不太懂的数学 !(exgcd只会套模版的菜鸡路过

访客
2020-12-16 23:09:41ZigZagK
2020-12-16 23:09:41
@Node Sans 

我也只会抄题解

博主