浅谈反演

这篇具有很好参考价值的文章主要介绍了浅谈反演。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

浅谈反演

二项式反演

\(g_i=\sum\limits_{j=0}\binom{i}{j}f_j,f_i=\sum\limits_{j=0}(-1)^{i-j}\binom{i}{j}g_j\)

还有一个的形式\(g_i=\sum\limits_{j=i}\binom{j}{i}f_j,f_i=\sum\limits_{j=i}(-1)^{i-j}\binom{j}{i}g_j\)

这里只针对第一个形式,为了得到更普遍的反演,这里我们引入一个等式

\(\sum\limits_{k=j}^{i}(-1)^{k-j}\binom{i}{k}\binom{k}{j}=[i=j]\)

注意到\(\binom{i}{k}\binom{k}{j}=\binom{i}{j}\binom{i-j}{k-j}\)

\(\sum\limits_{k=j}^{i}(-1)^{k-j}\binom{i}{k}\binom{k}{j}=\binom{i}{j}\sum\limits_{k=j}^{i}(-1)^{k-j}\binom{i-j}{k-j}=\binom{i}{j}\sum\limits_{k=0}^{i-j}(-1)^{k}\binom{i-j}{k}=\binom{i}{j}(1-1)^{i-j}\)

这里只有\(i=j\)\(0^0=1\)

定义矩阵\(A,B\),\(a_{i,j}=\binom{i}{j},b_{i,j}=(-1)^{i-j}\binom{i}{j}\)

\(A\times B=C\),\(c_{i,j}=\sum\limits_{k=0}^na_{i,k}b_{k,j}=\sum\limits_{k=0}^n(-1)^{k-j}\binom{i}{k}\binom{k}{j}=[i=j]\),则\(C=I\)

这里我们再记\(F\)为一维行向量,\(G\)同理

\(F\times A=G\),则\(F\times A\times B=G\times B=F\)

斯特林反演

斯特林数

先是第二类

\(n\brace m\),表示\(n\)个不同元素分到\(m\)个有序集合的方案数

不难得到一个递推式

\(n\brace m\) \(=\) \(n-1\brace m\) \(\times m\) \(+\) \(n-1\brace m-1\)

也就是新开一个集合或者在现有的集合里放一个

\(Bell\)\(B_n=\sum\limits_{m=0}^n\)\(n\brace m\)

考虑一个集合任意大小\(A\)的标号方案为\(|A|\)

则其\(EGF\)\(A(x)=\dfrac{x}{1!}+\dfrac{x^2}{2!}...=e^x-1\)

\(Bell\)数即为多个\(A\)的标号合并,即为\(SET_A=e^{e^x-1}\)

\(f_m\)为固定\(m\)\(n\brace m\)\(EGF\)

\(f_m=\dfrac{(e^x-1)^m}{m!}\)

第一类

\(n\brack m\),表示\(n\)个不同元素分成\(m\)个轮换的方案数

直观看就是集合内部同样有顺序

同样不难得出递推式

\(n\brack m\) \(=\) \(n-1\brack m\) \(\times (n-1)\) \(+\) \(n-1\brack m-1\)

这里我们也不难得出生成函数

考虑固定\(n\),记为\(f_n(x)\)
\(f_n(x)=f_{n-1}(x)*(n-1)+f_{n-1}(x)*x=f_{n-1}(x)\times(x+n-1)\)

\(f_0(x)=1\)

既得\(f_n(x)=\prod\limits_{i=0}^{n-1}(x+i)\),这就是\(x\)\(n\)次上升幂,记为\(x^{\overline{n}}\)

下降幂同理为\(x^{\underline{n}}=\prod\limits_{i=0}^{n-1}(x-i)\)

考虑\((-x)^{\overline{n}}=\prod\limits_{i=0}^{n-1}(-x+i)=(-1)^n\prod\limits_{i=0}^{n-1}(x-i)=(-1)^nx^{\underline{n}}\)即为上升幂和下降幂的转化

这里我们先只探讨单个\(x^{\overline{n}}\)的求法

考虑倍增\(x^{\overline{2n}}=x^{\overline{n}}(x+n)^{\overline{n}}\)

\(x^{\overline{n+m}}=x^{\overline{n}}(x+n)^{\overline{m}}\)

若已知\(f(x)\),对于\(f(x+n)\)

\(f(x+n)=\sum\limits_if_i(x+n)^i=\sum\limits_{i}f_i\sum\limits_{j=0}^ix^jn^{i-j}\binom{i}{j}\)

\(=\sum\limits_jx^j\sum\limits_{i=j}n^{i-j}\binom{i}{j}f_i=\sum\limits_j\dfrac{x^j}{j!}\sum\limits_{i=j}\dfrac{n^{i-j}}{(i-j)!}i!f_i\)

注意到这是个卷积的形式

考虑如果固定\(m\)的话,这里我们可以采用类似\(n\brace m\)的方式

对于一个轮换,其\(EGF\)\(A(x)=\sum\limits\dfrac{(i-1)!}{i!}x^i=\sum\limits\dfrac{x^i}{i}\)

同样\(n\brack m\)\(SET_A=A^m(x)\)

斯特林反演

首先有个式子

\(m^n=\sum\limits_{k=0}^{m}\)\(n\brace k\)\(\binom{m}{k}k!\)

也就是在\(n\)个不同的小球放到\(m\)个不同的小盒中,可为空,同时我们可以枚举用了多少小盒

考虑\(x^{\underline{n}}=(-x)^{\overline{n}}(-1)^n=\sum\limits_{i=0}^n\)\(n\brack i\)\((-1)^{n-i}x^i\)

\(=\) \(\sum\limits_{i=0}^n\)\(n\brack i\)\((-1)^{n-i}\) \(\sum\limits_{k=0}^{i}\)\(i\brace k\)\(\binom{x}{k}k!\)

\(=\) \(\sum\limits_{i=0}^n\)\(n\brack i\)\((-1)^{n-i}\) \(\sum\limits_{k=0}^i\)\(i\brace k\)\(x^{\underline{k}}\)

\(=\)\(\sum\limits_{k=0}^n\)\(x^{\underline{k}}\)\(\sum\limits_{i=k}^n\)\(n\brack i\)\((-1)^{n-i}\)\(i\brace k\)

注意到当\(k=n\)时,\(\sum\limits_{i=k}^n\)\(n\brack i\)\((-1)^{n-i}\)\(i\brace k\) =1,因此其他时候皆为\(0\)

\(\sum\limits_{i=k}^n\)\(n\brack i\)\((-1)^{n-i}\)\(i\brace k\) \(=[k=n]\)

这同样可以用二项式反演里的方法定义矩阵,最后得

\(g_i=\sum\limits_{j=0}\)\(i\brace j\) \(f_j,f_i=\sum\limits_{j=0}(-1)^{i-j}\)\(i\brack k\)\(g_j\)

\(g_i=\sum\limits_{j=0}\)\(i\brack j\) \(f_j,f_i=\sum\limits_{j=0}(-1)^{i-j}\)\(i\brace k\)\(g_j\)

生成函数的一些推论

幂和

首先我们知道\(\sum\limits_{i=0}^ni^k\)是个\(k+1\)次多项式

\(\sum\limits_{i=0}^ni^k\)=\(\sum\limits_{i=0}^n\)\(\sum\limits_{j=0}^{i}\)\(k\brace j\)\(\binom{i}{j}j!\)

注意\(k\brace j\)\(EGF\)\(\dfrac{(e^x-1)^j}{j!}\)

\(\sum\limits_{i=0}^n\sum\limits_{j=0}^{i}\binom{i}{j}[x^k]k!(e^x-1)^j=[x^k]k!\sum\limits_{i=0}^n\sum\limits_{j=0}^{i}\binom{i}{j}(e^x-1)^j\)

注意到\(\sum\limits_{j=0}^{i}\binom{i}{j}(e^x-1)^j\)是一个二项式展开的形式

则其可化为\([x^k]k!\sum\limits_{i=0}^n(e^{xi})=[x^k]k!\dfrac{e^{x(n+1)}-1}{e^x-1}\)

回到\(\sum\limits_{i=0}^n\)\(\sum\limits_{j=0}^{i}\)\(k\brace j\)\(\binom{i}{j}j!\)=\(\sum\limits_{j=0}^{n}\)\(k\brace j\)\(\sum\limits_{i=j}^{n}\binom{i}{j}j!\)

注意到\(\sum\limits_{i=j}^{n}\binom{i}{j}=\binom{n+1}{j+1}\)

其可化为\(\sum\limits_{j=0}^{n}\)\(k\brace j\)\(j!\binom{n+1}{j+1}\)

幂和变形

如果这里求的是\(\sum\limits_{i=0}^ni^k\binom{n}{i}\)

即可化为\(\sum\limits_{i=0}^n\)\(\sum\limits_{j=0}^{i}\)\(k\brace j\)\(\binom{i}{j}j!\binom{n}{i}\)=\(\sum\limits_{j=0}^{n}\)\(k\brace j\)\(\sum\limits_{i=j}^{n}\binom{i}{j}j!\binom{n}{i}\)=\(\sum\limits_{j=0}^{n}\)\(k\brace j\)\(j!\binom{n}{j}\)\(\sum\limits_{i=j}^{n}\binom{n-j}{i-j}\)

注意到\(\sum\limits_{i=j}^{n}\binom{n-j}{i-j}=\sum\limits_{i=0}^{n-j}\binom{n-j}{i}=2^{n-j}\)

则原式可化为\(\sum\limits_{j=0}^{n}\)\(k\brace j\)\(j!\binom{n}{j}\)\(2^{n-j}\),时间复杂度为\(\Theta(n\log_2n)\)

不过这里有线性做法

首先有复合函数\([x^k]F(G(x))\)

我们知道\(F(G(x))=\sum\limits_{i=0}[x^i]F(x)G^i(x)\),所以\([x^k]F(G(x))=[x^k]\sum\limits_{i=0}[x^i]F(x)G^i(x)\)

注意到如果\(G(x)\)的常数项为\(0\),\(i>k\)时对答案没贡献,因此我们的求和上限为\(k\)

回到本题,我们已经求的\(\sum\limits_{i=0}^ni^k=[x^k]k!\sum\limits_{i=0}^n(e^{xi})\)

注意到\(\binom{n}{i}\)的生成函数为\((1+x)^n\)

不难得出原式为\(\sum\limits_{i=0}^ni^k\binom{n}{i}=[x^k]k!\sum\limits_{i=0}^n[x^i](1+x)^n(e^{xi})\)

这个长得很像复合函数的展开,我们不难得出其为\([x^k]k!(1+e^x)^n\),这里有点不对,因为它的求和上限为\(+\infin\),但因为\(i>n\),\((1+x)^n\)的没有\(>n\)的项,所以求和上限可以改为\(n\)这里不难看出实际上是一个二项式展开

可上限为\(n\)依旧不行,因此我们想对\(G(x)=e^x\)去除常数项,也就是\(G(x)-1=e^x-1\)

原式即可化为\([x^k]k!\sum\limits_{i=0}^k[x^i](2+x)^n(e^x-1)^i\)

注意到我们这里并不处理\((e^x-1)^i\)

假设现在我们有一个函数\(F(x)\),我们考虑在\(x^k\)的地方截断,即\(f(x)=(F(x))\bmod(x^{k+1})\)

考虑\(F(x)\)向右平移\(c\)个单位,记为\(G(x)=F(x-c)\)

同样\(g(x)=f(x-c)\)

不难发现\([x^k]G(e^x)=[x^k]F(e^x-1)=[x^k]f(e^x-1)=[x^k]g(e^x)\)

其实这个好像不呢么显然

首先明确\(G(x)\not=g(x)\bmod x^{k+1}\)

举个例子

这里我们令\(c=1,G(x)=(x+1)^n\)

我们这里先回顾一下\(F(x)=(x+2)^n\)

\(f(x)=(x+2)^n \bmod x^{k+1}=\sum\limits_{i=0}^k\binom{n}{i}x^i2^{n-i}\)

\(g(x)=f(x-1)=\sum\limits_{i=0}^k\binom{n}{i}(x-1)^i2^{n-i}=\sum\limits_{i=0}^k\binom{n}{i}2^{n-i}\sum\limits_{j=0}^ix^j\binom{i}{j}(-1)^{i-j}=\sum\limits_{j=0}^kx^j\sum\limits_{i=j}^k\binom{n}{i}2^{n-i}\binom{i}{j}(-1)^{i-j}\)

\(G(x)=F(x-1)=\sum\limits_{i=0}^n\binom{n}{i}(x-1)^i2^{n-i}=\sum\limits_{j=0}^kx^j\sum\limits_{i=j}\binom{n}{i}2^{n-i}\binom{i}{j}(-1)^{i-j}\bmod x^{k+1}\)

明显\(g(x)\not=G(x)\bmod x^{k+1}\),但当\(j=k\)时,两者相等??注意这里\(x\)是不满足的

我们可以发现问题在于\(F(x-1)\)依旧有常数项,所以在截断和平移时会产生问题即\(f(x)\not =g(x+1)\bmod x^{k+1}\)

对于\(H(P(x))=[x^k]\sum\limits_{i=0}x^iH(x)P^i(x)\)

如果\(P(x)\)无常数项,则求和上限为\(k\)

因此我们可以直接截断,这里\(G(e^x)\bmod x^{k+1}=g(e^x)\),原因就在这

原式\(=\)\([x^k]k!G(e^x)=[x^k]k!F(e^x-1)=[x^k]k!f(e^x-1)=[x^k]k!g(e^x)\)

因此这里我们直接展开得到\([x^k]k!\sum\limits_{i=0}^k[x^i]g(x)e^{xi}\)

这里我们不妨把\([x^k]k!\sum\limits_{i=0}^ke^{xi}\)重新代为\(\sum\limits_{i=0}^ni^k\)

则原式可直接化为\(\sum\limits_{i=0}^k[x^i]g(x)i^k\)

注意到我们这里求和上限为\(k\),瓶颈在于\([x^i]g(x)\)

因此没有一个可以简单求得\(g(x)\)的方法

我们这里先明确\(G(x+1)=g(x+1)\bmod x^{k+1}\),不过这里在推的时候还得借用\(f,F\)

首先对\(F\)求导,\(nF(x)=(x+2)F'(x)\)

这里我们可以直接将其替换\(f\),但要注意\(f'(x)\)的第\(k\)项缺失

\(nf(x)=(x+2)f'(x)+2[x^k]F'(x)x^k\)

\(nf(x)-(x+2)f'(x)=2[x^k]F'(x)x^k\)

这里我们再平移一位

\(ng(x)-(x+1)g'(x)=2[x^k]F'(x)(x-1)^k=n2^{n-k}\binom{n-1}{k}(x-1)^k\)

注意到\((x-1)^k\)可以展开

\(ng(x)-(x+1)g'(x)=\sum\limits_{i=0}^kx^i\binom{k}{i}(-1)^{k-i}n2^{n-k}\binom{n-1}{k}\)

这里我们提取\(x^i\)的系数

\(n[x^i]g(x)-[x^i](x+1)g'(x)=\binom{k}{i}(-1)^{k-i}n2^{n-k}\binom{n-1}{k}\)

\(n[x^i]g(x)-[x^i]g'(x)-[x^{i-1}]g'(x)=\binom{k}{i}(-1)^{k-i}n2^{n-k}\binom{n-1}{k}\)

还原\(g'(x)\),这里只需还原\(x^i,x^{i-1}\)即可

\(n[x^i]g(x)-(i+1)[x^{i+1}]g(x)-(i)[x^{i}]g(x)=\binom{k}{i}(-1)^{k-i}n2^{n-k}\binom{n-1}{k}\)

\([x^{i+1}]g(x)=\dfrac{\binom{k}{i}(-1)^{k-i+1}n2^{n-k}\binom{n-1}{k}+(n-i)[x^i]g(x)}{i+1}\)

现在我们只需要求得\([x^0]g(x)\)即可

不难发现\([x^0]g(x)=\sum\limits_{i=0}^k\binom{n}{i}2^{n-i}(-1)^{i}\)

#include<bits/stdc++.h>
using namespace std;
const int MAXN=5005;
const int MOD=1e9+7;
int n,k;
int cnt_prime;
int Pow(int a,int b,int p)
{
    int base=a;
    int res=1;
    while(b)
    {
        if(b&1)
        {
            res=((long long)res*base)%p;
        }
        base=((long long)base*base)%p;
        b>>=1;
    }
    return res;
}
int inv(int a,int p)
{
    return Pow(a,p-2,p);
}
int inv_fac[MAXN];
int fac[MAXN];
int C(int n,int m)
{
    if(n<m||m<0)
    {
        return 0;
    }
    if(n==m||m==0)
    {
        return 1;
    }
    return ((((long long)fac[n]*inv_fac[m])%MOD)*inv_fac[n-m])%MOD;
}
int g[MAXN];
int main()
{
    int inv2=MOD-MOD/2;
    fac[0]=1;
    for(int i=1;i<=MAXN-5;i++)
    {
        fac[i]=((long long)fac[i-1]*i)%MOD;
    }
    inv_fac[MAXN-5]=inv(fac[MAXN-5],MOD);
    for(int i=MAXN-5-1;i>=1;i--)
    {
        inv_fac[i]=((long long)inv_fac[i+1]*(i+1))%MOD;
    }
    scanf("%d %d",&n,&k);
    if(n<=k)
    {
        int Res=0;
        for(int i=1;i<=n;i++)
        {
            int Ne=((long long)C(n,i)*Pow(i,k,MOD))%MOD;
            Res=((long long)Res+Ne)%MOD;
        }
        printf("%d\n",Res);
        return 0;
    }
    g[0]=0;
    int Mu2=Pow(2,n,MOD);
    int Bin=1;
    for(int i=0;i<=k;i++)
    {  
        int K=((long long)Mu2*Bin)%MOD;
        //printf("%d %d %d??\n",i,Mu2,Bin);
        if(i&1)
        {
            g[0]=((long long)g[0]-K+MOD)%MOD;
        }
        else
        {
            g[0]=((long long)g[0]+K)%MOD;
        }
        Mu2=((long long)Mu2*inv2)%MOD;
        Bin=((long long)Bin*(n-i))%MOD;
        Bin=((long long)Bin*inv(i+1,MOD))%MOD;
    }
    //printf("%d??\n",g[0]);
    int Ml=Pow(2,n-k,MOD);
    Ml=((long long)Ml*n)%MOD;
    int Kp=1;
    for(int i=0;i<k;i++)
    {
        Kp=((long long)Kp*(n-1-i))%MOD;
        Kp=((long long)Kp*inv(i+1,MOD))%MOD;
    }
    Ml=((long long)Ml*Kp)%MOD;
    for(int i=1;i<=k;i++)
    {
        int Kp=((long long)Ml*C(k,i-1))%MOD;
        if((k-(i-1)+1)&1)
        {
            Kp=MOD-Kp;
        }
        int Pp=(n-(i-1));
        Pp=((long long)Pp*g[i-1])%MOD;
        Kp=((long long)Kp+Pp)%MOD;
        Kp=((long long)Kp*inv(i,MOD))%MOD;
        g[i]=Kp;
    }
    int Res=0;
    for(int i=0;i<=k;i++)
    {
        int Ne=((long long)g[i]*Pow(i,k,MOD))%MOD;
        Res=((long long)Res+Ne)%MOD;
    }
    printf("%d\n",Res);
}

还有一个\(\sum\limits_{i=1}^nfab_i\times i^k\)

首先\(fab_i=fab_{i-1}+fab_{i-2}\)

不难得出\(fab\)\(OGF\),\(f(x)=xf(x)+x^2f(x)+[x^0]f(x)\)

的解出\(f(x)=\dfrac{1}{1-x-x^2}\)

返回原式\([x^k]k!\sum\limits_{i=1}^n[x^i]\dfrac{1}{1-x-x^2} (e^{xi})\)

同样的套路令\(F(x)=\dfrac{1}{1-x-x^2}\),\(G(x)=e^x\)

则原式可化为\([x^k]k!\dfrac{1}{1-e^x-e^{2x}}\)(??),这里的求和上限为\(+\infin\),\(>n\)的项是会统计的

重新定义\(F,G\)

这里我们可以对\(G(x)\)截断,即\(G(x)=\dfrac{1}{1-x-x^2}\bmod x^{n+1}\)

原式即可化为\([x^k]k!\sum\limits_{i=1}^n[x^i]G(x) (e^{xi})=[x^k]k!G(e^x)\)

为了消除常数项,设\(G(x)=F(x-1)\),则其可化为\([x^k]k!F(e^x-1)\)

展开\([x^k]k!\sum\limits_{i=1}^n[x^i]F(x)(e^x-1)^i\),这里没有常数项,即\([x^k]k!\sum\limits_{i=1}^k[x^i]F(x)(e^x-1)^i\)

考虑对\(F(x)\)截断为\(f(x)=F(x)\bmod x^{k+1}\),原式可化为\([x^k]k!\sum\limits_{i=1}^k[x^i]f(x)(e^x-1)^i\)

我们在记\(g(x)=f(x-1)\),和上题一样,\(G(e^x)=g(e^x)\bmod x^{k+1}\)则原式可直接化为\(\sum\limits_{i=0}^k[x^i]g(x)i^k\)

这里\(F(x)=G(x+1)=\dfrac{1}{1-(x+1)-(x+1)^2}\bmod x^{n+1}=\dfrac{-1}{x^2+3x+1}\bmod x^{n+1}\)

注意这样是不对的,\(x^2+3x+1\)可能会往后贡献

我们先考虑\(G(x)=\dfrac{1}{1-x-x^2}\bmod x^{n+1}\)是什么

如果没有截断,\(G(x)=xG(x)+x^2G(x)+1\),不难发现,这里多算了\(fab_{n}x^{n+1}\),\(fab_{n}x^{n+2},fab_{n-1}x^{n+1}\)

\(G(x)=xG(x)+x^2G(x)+1-fab_{n}x^{n+1}-fab_{n}x^{n+2}-fab_{n-1}x^{n+1}\)

\(G(x)=\dfrac{1-fab_{n}x^{n+1}-fab_{n}x^{n+2}-fab_{n-1}x^{n+1}}{1-x-x^2}\)

\(F(x)=\dfrac{fab_{n}(x+1)^{n+1}+fab_{n}(x+1)^{n+2}+fab_{n-1}(x+1)^{n+1}-1}{x^2+3x+1}\)

我们先明确,要递推求\(g\)

其中\(G(x+1)=g(x+1)\bmod x^{k+1}\)

我们知道\(G(x)\not =F(x-1)\bmod x^{k+1}\),但\(g(x)=f(x-1)\bmod x^{k+1}\)

因此我们可以先求得\(G(x+1)\bmod x^{k+1}\)

\(G(x+1)=F(x)=F(x)=\dfrac{fab_{n}(x+1)^{n+1}+fab_{n}(x+1)^{n+2}+fab_{n-1}(x+1)^{n+1}-1}{x^2+3x+1}\)

不妨令\(P(x+1)=fab_{n}(x+1)^{n+1}+fab_{n}(x+1)^{n+2}+fab_{n-1}(x+1)^{n+1}-1\)

\(G(x+1)=\dfrac{P(x+1)}{x^2+3x+1}\)

\(G(x+1)x^2+3xG(x+1)+G(x+1)=P(x+1)\)

这里我们求\(P(x+1)\)\(x^{k+1}\)处截断的结果,令其为\(p(x+1)\)

我们再令\(h_n(x+1)=(x+1)^n\bmod x^{k+1}\)

\(P(x+1)=fab_{n}(x+1)^{n+1}+fab_{n}(x+1)^{n+2}+fab_{n-1}(x+1)^{n+1}-1\)

可以发现这里我们直接替换即可

\(p(x+1)=(fab_n+fab_{n-1})h_{n+1}(x+1)+fab_nh_{n+2}(x+1)-1\)

对于\(h_n(x+1)\),求个导

\(h_n'(x+1)\times (x+1)+([x^k]h_n(x+1)-[x^{k-1}](h'_n(x+1)))x^k=nh_n(x+1)\)

\(h'(x+1)\times(x+1)+(n\binom{n}{k}-n\binom{n-1}{k-1})x^k=nh_n(x+1)\)

\(h'(x+1)\times(x+1)+(n\binom{n}{k}-n\binom{n-1}{k-1})x^k=nh_n(x+1)\)

\(h'(x+1)\times(x+1)=nh_n(x+1)+(n-k)\binom{n}{k}x^k\)

提取\([x^i]\)的系数

\([x^i]h'(x+1)(x+1)=[x^i]nh_n(x+1)+[k=i](n-k)\binom{n}{k}\)

\([x^{i-1}]h_n'(x+1)+[x^i]h_n'(x+1)=[x^i]nh_n(x+1)+[k=i](n-k)\binom{n}{k}\)

\([x^{i}](i)h_n(x+1)+[x^{i+1}](i+1)h_n(x+1)=[x^i]nh_n(x+1)+[k=i](n-k)\binom{n}{k}\)

\([x^i]h_n(x+1)=\dfrac{(n-i)[x^i]h_n(x+1)+[k=i](n-k)\binom{n}{k}}{i+1}\)

等等,\((x+1)^n\bmod x^{k+1}\)不是可以直接算吗???

设不取模的为\(H_n(x)\)

\(H_n(x)=x^n,H_n(x+1)=(x+1)^n,h_n(x+1)=\sum\limits_{i=0}^k\binom{n}{i}x^k,h_n(x)=\sum\limits_{i=0}^k\binom{n}{i}(x-1)^k\)

感觉推\(x+1\)没用吧,可能是我没理解

对不起,好像有用

直接沿用上一题的思路

\(G(x+1)x^2+3xG(x+1)+G(x+1)=P(x+1)\)

我们考虑截断\(x^{k+1}\)

\(g(x+1)x^2+3xg(x+1)+g(x+1)=p(x+1)+[x^{k}]g(x+1)(x)^{k+2}+[x^{k-1}]g(x+1)x^{k+1}+3[x^k]g(x+1)x^{k+1}\)

平移一下

\(g(x)(x-1)^2+3(x-1)g(x)+g(x)=p(x)+[x^{k}]g(x+1)(x-1)^{k+2}+[x^{k-1}]g(x+1)(x-1)^{k+1}+3[x^k]g(x+1)(x-1)^{k+1}\)

\(x^2g(x)+xg(x)-g(x)=p(x)+[x^{k}]g(x+1)(x-1)^{k+2}+[x^{k-1}]g(x+1)(x-1)^{k+1}+3[x^k]g(x+1)(x-1)^{k+1}\)

提取\([x^i]\)的系数

\([x^{i-2}]g(x)+[x^{i-1}]g(x)-[x^{i}]g(x)\)

\(=[x^i]p(x)+[x^k]g(x+1)(-1)^{k+2-i}\binom{k+2}{i}+[x^{k-1}]g(x+1)(-1)^{k+1-i}\binom{k+1}{i}+3[x^k]g(x+1)(-1)^{k+1-i}\binom{k+1}{i}\)

现在问题在于求\([x^i]p(x)\)

\(P(x+1)=fab_{n}(x+1)^{n+1}+fab_{n}(x+1)^{n+2}+fab_{n-1}(x+1)^{n+1}-1\)

\(p(x+1)=(fab_n+fab_{n-1})h_{n+1}(x+1)+fab_nh_{n+2}(x+1)-1\)

平移

\(p(x)=(fab_n+fab_{n-1})h_{n+1}(x)+fab_nh_{n+2}(x)-1\)

问题在于求\(h_{n}(x)\)

前面不是有\(h'(x+1)\times(x+1)=nh_n(x+1)+(n-k)\binom{n}{k}x^k\)

我们考虑在这里平移

\(h_n'(x)\times(x)=nh_n(x)+(n-k)\binom{n}{k}(x-1)^k\)

提取\([x^i]\)的系数

\([x^{i-1}]h'_n(x)=n[x^i]h_n(x)+(n-k)\binom{n}{k}(-1)^{k-i}\binom{k}{i}\)

\([x^{i}]ih_n(x)=n[x^i]h_n(x)+(n-k)\binom{n}{k}(-1)^{k-i}\binom{k}{i}\)

\([x^i]h_n(x)=\dfrac{(n-k)\binom{n}{k}(-1)^{k-i+1}\binom{k}{i}}{n-i}\)

至于\([x^k]g(x+1)\)如何求这里我们不妨用\(bostan-mori\)

代码似乎不好打就咕了

小结

对于\(\sum\limits_{i=0}^{n}[x^i]f(x)g^i(x)=f(g(x))=h(x)\)

我们可以利用平移\(g(x)\)来消除常数项,因此式子的求和上限变为\(k\)

也就是\(G(x+c)=g(x+c)\bmod x^{k+1}\),这里我们可以认为是先平移再截断再还原

但这样\(g(x)\)的求解变得异常复杂,可以利用求导等方式错位求解

单位根反演

我们称\(w^n=1\)\(n\)次单位根

\(w^n_k=e^{\frac{2k\pi i}{n}}\)

单位根反演即为\([n|k]=\dfrac{\sum\limits_{i=0}^{n-1}w^{ik}_n}{n}\)

似乎很显然,\(\dfrac{\sum\limits_{j=0}^{n-1}w^{jk}_n}{n}=\dfrac{\sum\limits_{j=0}^{n-1}e^{\frac{2kji\pi}{n}}}{n}\)

注意这是个等比数列,原式可化为,\(\dfrac{\dfrac{e^{2ki\pi}-1}{e^{\frac{2ki\pi}{n}}-1}}{n}\)

注意到\(e^{2ki\pi}-1=0\),只有当\([n|k]\)时分母也为\(0\)

因此\([n|k]=\dfrac{\sum\limits_{i=0}^{n-1}w^{ik}_n}{n}\)

逝一逝1

\(\sum\limits_{i=0,k|i}^n\binom{n}{i}\bmod (P=998244353)=\sum\limits_{i=0}^n[k|i]\binom{n}{i}=\sum\limits_{i=0}^n\frac{\sum\limits_{j=0}^{k-1}w_k^{ij}}{k}\binom{n}{i}=\frac{\sum\limits_{j=0}^{k-1}(w_k^j+1)^n}{k}\)

这里的\(w_k^j\)代原根即可

逝一逝2

如果这里的\(P\)无原根,这里的\(k\)\(2\)的幂次

其实也差不多的,注意到我们发现\(f(x)=(x+1)^n\),这里我们就是求点值表示,直接任意模数\(NTT\)

其实对于大部分\(\sum\limits_{i=0,k|i}^n[x^i]f(x)\)似乎都可以这么做,\(n\)\(f(x)\)的最高次

\(\sum\limits_{i=0}^n[k|i][x^i]f(x)=\sum\limits_{i=0}^n\frac{\sum\limits_{j=0}^{k-1}w_k^{ij}}{k}[x^i]f(x)=\frac{1}{k}\sum\limits_{j=0}^{k-1}f(w_k^j)\)

逝一逝3

\(\sum\limits_{i=0}^n[k|i]\binom{n}{i}fab_i\)

首先明确一点,对于矩阵\(A\)同样是满足二项式定理的

则原式化成\(\sum\limits_{i=0}^n[k|i]\binom{n}{i}A^i\)

然后再化成\(\sum\limits_{i=0}^n\frac{\sum\limits_{j=0}^{k-1}w_k^{ij}}{k}\binom{n}{i}A^i=\dfrac{1}{k}\sum\limits_{j=0}^{k-1}(w_k^jA+I)^n\)文章来源地址https://www.toymoban.com/news/detail-445392.html

到了这里,关于浅谈反演的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二项分布习题

    习题: X ~ B(n,p),n = 5, p = 0.25, k = (0 ~ n)。 将 n , k , p 代入函数: 解: 输出为 : 一射手向目标独立地进行了3次射击,每次击中率为0.8,求3次射击中击中目标的次数的分布律,并求3次射击中至少击中2次的概率。 解: 设 X 表示击中目标的次数,则 X = 0, 1, 2, 3。

    2024年02月06日
    浏览(23)
  • 负二项分布(一种离散分布)

    负二项分布是伯努利分布的推广,它模拟了在指定(非随机)失败次数(表示为r)发生之前,一系列独立且同分布的伯努利试验中的成功次数 负二项分布可以用来确定一个系列中多于1次失败的概率 比如:计算一台机器彻底崩溃前的天数、输掉系列赛冠军需要进行多少场比赛

    2024年02月15日
    浏览(30)
  • 伯努利分布、二项分布、概念辨析

    伯努利分布 伯努利分布是二项分布的一种特殊情况,它描述的是单次随机试验中,只有两种结果的概率分布。其中,一种结果的概率为 p p p ,另外一种结果的概率为 1 − p 1-p 1 − p 。伯努利分布的概率质量函数如下: f ( k ; p ) = { p if  k = 1 , 1 − p if  k = 0. f(k;p)=begin{cases}

    2024年02月07日
    浏览(27)
  • 二项分布的极大似然估计

    笔记来源:Maximum Likelihood for the Binomial Distribution, Clearly Explained!!! P ( x ∣ n , p ) P(x|n,p) P ( x ∣ n , p ) 计算二项分布的极大似然估计 L ( p ∣ n , x ) L(p|n,x) L ( p ∣ n , x )

    2024年02月11日
    浏览(48)
  • 【分布族谱】正态分布和二项分布的关系

    正态分布,最早由棣莫弗在二项分布的渐近公式中得到,而真正奠定其地位的,应是高斯对测量误差的研究,故而又称Gauss分布。测量是人类定量认识自然界的基础,测量误差的普遍性,使得正态分布拥有广泛的应用场景,或许正因如此,正太分布在分布族谱图中居于核心的

    2024年02月05日
    浏览(34)
  • 机器学习之伯努利分布及二项分布

    伯努利分布:又称两点分布或0-1分布 ,其 样本空间只有两个点 ,一般取{0,1},不同的伯努利分布只是取到这两个值的概率不一样。伯努利分布只有一个参数p(用描述取1的概率),记作 B e r n o u l l ( p ) Bernoull(p) B er n o u ll ( p ) 或 X X X ~ B ( p ) B(p) B ( p ) 读作X服从参数为p的伯

    2024年01月18日
    浏览(60)
  • 概率论中二项分布期望与方差的详细推导

    二项分布的期望和方差表达式非常简洁,但推导过程却很灵活,我们做如下推导: 概率论中,离散型随机变量期望的定义为 二项分布概率公式为 : 则其期望为 : 我们记   则 因为 所以 根据二项式展开定理,有 所以原式 概率论中,方差的定义为 因为上文已经得到E(X),所以

    2024年02月21日
    浏览(33)
  • 【人工智能】消解反演复习

    需要了解有关离散数学的基础概念 谓词逻辑法采用谓词合式公式和一阶谓词演算把要解决的问题变为一个有待证明的问题,然后采用消解原理和消解反演来证明一个新语句是从已知的正确语句导出的, 从而证明新语句也是正确的. 命题逻辑虽能够把客观世界的各种实事表示为逻

    2024年02月02日
    浏览(29)
  • 「学习笔记」莫比乌斯反演

    点击查看目录 目录 「学习笔记」莫比乌斯反演 前置知识 整除分块 积性函数 线性筛任意积性函数 莫比乌斯反演 莫比乌斯函数 莫比乌斯反演公式 例题 [HAOI2011] Problem b YY 的 GCD [SDOI2014] 数表 DZY Loves Math [SDOI2015] 约数个数和 [SDOI2017] 数字表格 于神之怒加强版 [国家集训队] Cras

    2024年02月12日
    浏览(24)
  • 莫比乌斯函数及反演学习笔记

    (1.) 艾佛森括号: ([P]=begin{cases}1 mathtt{(if P is true)}\\\\0 mathtt{(otherwise)}end{cases}) (2.) (amid b) 表示 (a) 是 (b) 的因子 (3.) 整除分块: (displaystylesum_{i=1}^nlfloordfrac{N}{i}rfloor) (4.) (p) 没有特殊说明时表示质数 (5.) (mathbb{P}) 表示质数集, (mathbb{Z}) 表示整数集。

    2024年02月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包