题面

数数题

题解

让多项式完全入门、求导积分0基础的来做这个???

赶紧看来一波高中选修2-2,才来硬推这道题。

所以说有一些对于巨佬们来说很简单就能推出来的东西,我可能反而会用一些更加复杂的方法。

题目可以看成是对于所有的 kkk 求出:

lim⁡Δx→0(∏i=1n1aiΔx+1⏟加 1是因为植树原理)⏟每种结果出现的概率(∑b1=0a1Δx∑b2=0a2Δx⋯∑bn=0anΔx⏟枚举每个 xi=biΔx(∑i=1nbiΔx)k)\lim_{\Delta x\rightarrow 0} \underbrace{\left(\prod_{i=1}^n\frac{1}{\underbrace{\tfrac{a_i}{\Delta x}+1}_{\tiny\text{加 $1$ 是因为植树原理}}}\right)}_{\text{每种结果出现的概率}} \left( \underbrace{ \sum_{b_1=0}^{\frac{a_1}{\Delta x}} \sum_{b_2=0}^{\frac{a_2}{\Delta x}} \cdots \sum_{b_n=0}^{\frac{a_n}{\Delta x}} }_{\scriptsize\text{枚举每个 $x_i=b_i\Delta x$}} \left(\sum_{i=1}^n b_i\Delta x\right)^k \right) Δx→0lim​每种结果出现的概率⎝⎜⎜⎛​i=1∏n​加 1 是因为植树原理Δxai​​+1​​1​⎠⎟⎟⎞​​​⎝⎜⎜⎜⎜⎛​枚举每个 xi​=bi​Δxb1​=0∑Δxa1​​​b2​=0∑Δxa2​​​⋯bn​=0∑Δxan​​​​​(i=1∑n​bi​Δx)k⎠⎟⎟⎟⎟⎞​

化简一下:

lim⁡Δx→0(∏i=1n1aiΔx+1)(∑b1=0a1Δx∑b2=0a2Δx⋯∑bn=0anΔx(∑i=1nbiΔx)k)=lim⁡Δx→0Δxn(∏i=1n1ai+Δx)(∑b1=0a1Δx∑b2=0a2Δx⋯∑bn=0anΔx(∑i=1nbiΔx)k)\begin{aligned} &\lim_{\Delta x\rightarrow 0} \left( \prod_{i=1}^n\frac{1}{\tfrac{a_i}{\Delta x}+1} \right) \left( \sum_{b_1=0}^{\frac{a_1}{\Delta x}} \sum_{b_2=0}^{\frac{a_2}{\Delta x}} \cdots \sum_{b_n=0}^{\frac{a_n}{\Delta x}} \left(\sum_{i=1}^n b_i\Delta x\right)^k \right)\\ =&\lim_{\Delta x\rightarrow 0} \Delta x^n \left( \prod_{i=1}^n\frac{1}{a_i+\Delta x} \right) \left( \sum_{b_1=0}^{\frac{a_1}{\Delta x}} \sum_{b_2=0}^{\frac{a_2}{\Delta x}} \cdots \sum_{b_n=0}^{\frac{a_n}{\Delta x}} \left(\sum_{i=1}^n b_i\Delta x\right)^k \right)\\ \end{aligned} =​Δx→0lim​(i=1∏n​Δxai​​+11​)⎝⎛​b1​=0∑Δxa1​​​b2​=0∑Δxa2​​​⋯bn​=0∑Δxan​​​(i=1∑n​bi​Δx)k⎠⎞​Δx→0lim​Δxn(i=1∏n​ai​+Δx1​)⎝⎛​b1​=0∑Δxa1​​​b2​=0∑Δxa2​​​⋯bn​=0∑Δxan​​​(i=1∑n​bi​Δx)k⎠⎞​​

将 (∑i=1nbi)k\left(\sum\limits_{i=1}^n b_i\right)^k(i=1∑n​bi​)k 多项式展开:

=lim⁡Δx→0Δxn(∏i=1n1ai+Δx)(∑b1=0a1Δx∑b2=0a2Δx⋯∑bn=0anΔx∑y1,y2,⋯,yn≥0y1+y2⋯+yn=k(ky1,y2,⋯,yn)∏i=1n(biΔx)yi)\begin{aligned} =&\lim_{\Delta x\rightarrow 0} \Delta x^{n} \left( \prod_{i=1}^n\frac{1}{a_i+\Delta x} \right) \left( \sum_{b_1=0}^{\frac{a_1}{\Delta x}} \sum_{b_2=0}^{\frac{a_2}{\Delta x}} \cdots \sum_{b_n=0}^{\frac{a_n}{\Delta x}} \sum_{y_1,y_2,\cdots,y_n\geq 0 \atop y_1+y_2\cdots+y_n=k} {k\choose y_1,y_2,\cdots,y_n} \prod_{i=1}^n (b_i\Delta x)^{y_i} \right)\\ \end{aligned} =​Δx→0lim​Δxn(i=1∏n​ai​+Δx1​)⎝⎜⎛​b1​=0∑Δxa1​​​b2​=0∑Δxa2​​​⋯bn​=0∑Δxan​​​y1​+y2​⋯+yn​=ky1​,y2​,⋯,yn​≥0​∑​(y1​,y2​,⋯,yn​k​)i=1∏n​(bi​Δx)yi​⎠⎟⎞​​

把 ∏i=1nbiyi\prod\limits_{i=1}^n b_i^{y_i}i=1∏n​biyi​​ 拆开,并交换一下求和符号:(这一步可能跳得有点多,但还是不详细阐述,因为自己推一下就可以了)

=lim⁡Δx→0Δxn(∏i=1n1ai+Δx)(∑y1,y2,⋯,yn≥0y1+y2⋯+yn=k(ky1,y2,⋯,yn)(∑b1=0a1Δx(b1Δx)y1)(∑b2=0a2Δx(b2Δx)y2)⋯(∑bn=0anΔx(bnΔx)yn))\begin{aligned} =&\lim_{\Delta x\rightarrow 0} \Delta x^{n} \left( \prod_{i=1}^n\frac{1}{a_i+\Delta x} \right) \left( \sum_{y_1,y_2,\cdots,y_n\geq 0 \atop y_1+y_2\cdots+y_n=k} {k\choose y_1,y_2,\cdots,y_n} \left(\sum_{b_1=0}^{\frac{a_1}{\Delta x}} (b_1\Delta x)^{y_1}\right) \left(\sum_{b_2=0}^{\frac{a_2}{\Delta x}} (b_2\Delta x)^{y_2}\right) \cdots \left(\sum_{b_n=0}^{\frac{a_n}{\Delta x}} (b_n\Delta x)^{y_n}\right) \right)\\ \end{aligned} =​Δx→0lim​Δxn(i=1∏n​ai​+Δx1​)⎝⎜⎛​y1​+y2​⋯+yn​=ky1​,y2​,⋯,yn​≥0​∑​(y1​,y2​,⋯,yn​k​)⎝⎛​b1​=0∑Δxa1​​​(b1​Δx)y1​⎠⎞​⎝⎛​b2​=0∑Δxa2​​​(b2​Δx)y2​⎠⎞​⋯⎝⎛​bn​=0∑Δxan​​​(bn​Δx)yn​⎠⎞​⎠⎟⎞​​

将最前面的 Δxn\Delta x^nΔxn 扔进去:

=lim⁡Δx→0(∏i=1n1ai+Δx)(∑y1,y2,⋯,yn≥0y1+y2⋯+yn=k(ky1,y2,⋯,yn)(∑b1=0a1Δx(b1Δx)y1Δx)(∑b2=0a2Δx(b2Δx)y2Δx)⋯(∑bn=0anΔx(bnΔx)ynΔx))\begin{aligned} =&\lim_{\Delta x\rightarrow 0} \left( \prod_{i=1}^n\frac{1}{a_i+\Delta x} \right) \left( \sum_{y_1,y_2,\cdots,y_n\geq 0 \atop y_1+y_2\cdots+y_n=k} {k\choose y_1,y_2,\cdots,y_n} \left(\sum_{b_1=0}^{\frac{a_1}{\Delta x}} (b_1\Delta x)^{y_1}\Delta x\right) \left(\sum_{b_2=0}^{\frac{a_2}{\Delta x}} (b_2\Delta x)^{y_2}\Delta x\right) \cdots \left(\sum_{b_n=0}^{\frac{a_n}{\Delta x}} (b_n\Delta x)^{y_n}\Delta x\right) \right)\\ \end{aligned} =​Δx→0lim​(i=1∏n​ai​+Δx1​)⎝⎜⎛​y1​+y2​⋯+yn​=ky1​,y2​,⋯,yn​≥0​∑​(y1​,y2​,⋯,yn​k​)⎝⎛​b1​=0∑Δxa1​​​(b1​Δx)y1​Δx⎠⎞​⎝⎛​b2​=0∑Δxa2​​​(b2​Δx)y2​Δx⎠⎞​⋯⎝⎛​bn​=0∑Δxan​​​(bn​Δx)yn​Δx⎠⎞​⎠⎟⎞​​

仔细观察 ∑bi=0aiΔx(biΔx)yiΔx\sum\limits_{b_i=0}^{\frac{a_i}{\Delta x}} (b_i\Delta x)^{y_i}\Delta xbi​=0∑Δxai​​​(bi​Δx)yi​Δx,根据定积分的定义,发现它就是:

∑bi=0aiΔx(biΔx)yiΔx=∫0aixyidx=aiyi+1yi+1\sum\limits_{b_i=0}^{\frac{a_i}{\Delta x}} (b_i\Delta x)^{y_i}\Delta x=\int_{0}^{a_i}x^{y_i}\text{d}x=\frac{a_i^{y_i+1}}{y_i+1}bi​=0∑Δxai​​​(bi​Δx)yi​Δx=∫0ai​​xyi​dx=yi​+1aiyi​+1​​

所以原式:

=lim⁡Δx→0(∏i=1n1ai+Δx)(∑y1,y2,⋯,yn≥0y1+y2⋯+yn=k(ky1,y2,⋯,yn)∏i=1naiyi+1yi+1)=lim⁡Δx→0∑y1,y2,⋯,yn≥0y1+y2⋯+yn=k(ky1,y2,⋯,yn)∏i=1naiyi+1yi+1⋅1ai+Δx=∑y1,y2,⋯,yn≥0y1+y2⋯+yn=k(ky1,y2,⋯,yn)∏i=1naiyiyi+1\begin{aligned} =&\lim_{\Delta x\rightarrow 0} \left( \prod_{i=1}^n\frac{1}{a_i+\Delta x} \right) \left( \sum_{y_1,y_2,\cdots,y_n\geq 0 \atop y_1+y_2\cdots+y_n=k} {k\choose y_1,y_2,\cdots,y_n} \prod_{i=1}^n \frac{a_i^{y_i+1}}{y_i+1} \right)\\ =&\lim_{\Delta x\rightarrow 0} \sum_{y_1,y_2,\cdots,y_n\geq 0 \atop y_1+y_2\cdots+y_n=k} {k\choose y_1,y_2,\cdots,y_n} \prod_{i=1}^n \frac{a_i^{y_i+1}}{y_i+1}\cdot\frac{1}{a_i+\Delta x} \\ =&\sum_{y_1,y_2,\cdots,y_n\geq 0 \atop y_1+y_2\cdots+y_n=k} {k\choose y_1,y_2,\cdots,y_n} \prod_{i=1}^n \frac{a_i^{y_i}}{y_i+1} \\ \end{aligned} ===​Δx→0lim​(i=1∏n​ai​+Δx1​)⎝⎜⎛​y1​+y2​⋯+yn​=ky1​,y2​,⋯,yn​≥0​∑​(y1​,y2​,⋯,yn​k​)i=1∏n​yi​+1aiyi​+1​​⎠⎟⎞​Δx→0lim​y1​+y2​⋯+yn​=ky1​,y2​,⋯,yn​≥0​∑​(y1​,y2​,⋯,yn​k​)i=1∏n​yi​+1aiyi​+1​​⋅ai​+Δx1​y1​+y2​⋯+yn​=ky1​,y2​,⋯,yn​≥0​∑​(y1​,y2​,⋯,yn​k​)i=1∏n​yi​+1aiyi​​​​

以上就是将题目的要求化成一个跟无限无关的东西的过程。

写到这里才发现我的化简过程很繁琐,应该一开始就直接多项式展开然后再把积分套进去,这样就会简略很多。

将 (ky1,y2,⋯,yn)\dbinom{k}{y_1,y_2,\cdots,y_n}(y1​,y2​,⋯,yn​k​) 化简:

(ky1,y2,⋯,yn)=(ky1)(k−y1y2)⋯(k−y1−y2−⋯−yn−1yn)=k!y1!(k−y1)!×(k−y1)!y2!(k−y1−y2)!×⋯×(k−y1−y2−⋯−yn−1)!yn!(k−y1−y2−⋯−yn)!=k!y1!y2!⋯yn!\begin{aligned} &\binom{k}{y_1,y_2,\cdots,y_n}\\ =&\binom{k}{y_1}\binom{k-y_1}{y_2}\cdots\binom{k-y_1-y_2-\cdots-y_{n-1}}{y_n}\\ =&\frac{k!}{y_1!(k-y_1)!}\times\frac{(k-y_1)!}{y_2!(k-y_1-y_2)!}\times\cdots\times\frac{(k-y_1-y_2-\cdots-y_{n-1})!}{y_n!(k-y_1-y_2-\cdots-y_{n})!}\\ =&\frac{k!}{y_1!y_2!\cdots y_n!}\\ \end{aligned} ===​(y1​,y2​,⋯,yn​k​)(y1​k​)(y2​k−y1​​)⋯(yn​k−y1​−y2​−⋯−yn−1​​)y1​!(k−y1​)!k!​×y2​!(k−y1​−y2​)!(k−y1​)!​×⋯×yn​!(k−y1​−y2​−⋯−yn​)!(k−y1​−y2​−⋯−yn−1​)!​y1​!y2​!⋯yn​!k!​​

代入原式得:

=∑y1,y2,⋯,yn≥0y1+y2⋯+yn=kk!y1!y2!⋯yn!∏i=1naiyiyi+1=k!∑y1,y2,⋯,yn≥0y1+y2⋯+yn=k∏i=1naiyi(yi+1)!\begin{aligned} =&\sum_{y_1,y_2,\cdots,y_n\geq 0 \atop y_1+y_2\cdots+y_n=k} \frac{k!}{y_1!y_2!\cdots y_n!} \prod_{i=1}^n \frac{a_i^{y_i}}{y_i+1}\\ =&k!\sum_{y_1,y_2,\cdots,y_n\geq 0 \atop y_1+y_2\cdots+y_n=k} \prod_{i=1}^n \frac{a_i^{y_i}}{(y_i+1)!}\\ \end{aligned} ==​y1​+y2​⋯+yn​=ky1​,y2​,⋯,yn​≥0​∑​y1​!y2​!⋯yn​!k!​i=1∏n​yi​+1aiyi​​​k!y1​+y2​⋯+yn​=ky1​,y2​,⋯,yn​≥0​∑​i=1∏n​(yi​+1)!aiyi​​​​

设 F(x)=∑n=0∞xn(n+1)!F(x)=\sum\limits_{n=0}^{\infty}\dfrac{x^n}{(n+1)!}F(x)=n=0∑∞​(n+1)!xn​,则 aiyi(yi+1)!=[xyi]F(aix)\dfrac{a_i^{y_i}}{(y_i+1)!}=[x^{y_i}]F(a_ix)(yi​+1)!aiyi​​​=[xyi​]F(ai​x),原式即为:

=k![xk]∏i=1nF(aix)=k![x^k]\prod_{i=1}^nF(a_ix) =k![xk]i=1∏n​F(ai​x)

考虑对这个式子先取 ln⁡\lnln 再取 exp⁡\expexp(显然式子值不变),得:

=k![xk]exp⁡(ln⁡(∏i=1nF(aix)))=k![xk]exp⁡(∑i=1nln⁡F(aix))\begin{aligned} =&k![x^k]\exp\left(\ln\left(\prod_{i=1}^nF(a_ix)\right)\right)\\ =&k![x^k]\exp\left(\sum_{i=1}^n\ln F(a_ix)\right)\\ \end{aligned} ==​k![xk]exp(ln(i=1∏n​F(ai​x)))k![xk]exp(i=1∑n​lnF(ai​x))​

设 G(x)=ln⁡F(x)G(x)=\ln F(x)G(x)=lnF(x),原式即为:

=k![xk]exp⁡(∑i=1nG(aix))=k![x^k]\exp\left(\sum_{i=1}^nG(a_ix)\right) =k![xk]exp(i=1∑n​G(ai​x))

也就是说我们需要求出 ∑i=1nG(aix)\sum\limits_{i=1}^nG(a_ix)i=1∑n​G(ai​x) 的前 mmm 项系数。

显然 G(x)G(x)G(x) 我们是可以直接求出来的,设 G(x)=∑j=0∞gjxjG(x)=\sum\limits_{j=0}^{\infty}g_jx^jG(x)=j=0∑∞​gj​xj,那么 G(aix)G(a_ix)G(ai​x) 的第 jjj 项系数为 gjaijg_ja_i^jgj​aij​,那么 ∑i=1nG(aix)\sum\limits_{i=1}^nG(a_ix)i=1∑n​G(ai​x) 的第 jjj 项系数为 gj∑i=1naijg_j\sum\limits_{i=1}^na_i^jgj​i=1∑n​aij​。

所以我们需要对所有的 j=1∼mj=1\sim mj=1∼m,求出 ∑i=1naij\sum\limits_{i=1}^na_i^ji=1∑n​aij​。

这是一个很经典的问题,相当于要求出 ∑i=1n11−aix\sum\limits_{i=1}^n\dfrac{1}{1-a_ix}i=1∑n​1−ai​x1​。(原因是 11−aix\dfrac{1}{1-a_ix}1−ai​x1​ 第 jjj 项的系数就是 aija_i^jaij​,这个自己做大除法模拟多项式求逆验证即可)

至于如何求 ∑i=1n11−aix=11−a1x+11−a2x+⋯+11−anx\sum\limits_{i=1}^n \dfrac{1}{1-a_ix}=\dfrac{1}{1-a_1x}+\dfrac{1}{1-a_2x}+\cdots+\dfrac{1}{1-a_nx}i=1∑n​1−ai​x1​=1−a1​x1​+1−a2​x1​+⋯+1−an​x1​,直接用分治 NTT 解决。

具体来说,假设当前要求 ∑i=lr11−aix\sum\limits_{i=l}^r \dfrac{1}{1-a_ix}i=l∑r​1−ai​x1​,已经知道了 AB=∑i=lmid11−aix\dfrac{A}{B}=\sum\limits_{i=l}^{mid} \dfrac{1}{1-a_ix}BA​=i=l∑mid​1−ai​x1​,CD=∑i=mid+1r11−aix\dfrac{C}{D}=\sum\limits_{i=mid+1}^{r} \dfrac{1}{1-a_ix}DC​=i=mid+1∑r​1−ai​x1​,那么用 NTT 求出 AB+CD=AD+BCBD\dfrac{A}{B}+\dfrac{C}{D}=\dfrac{AD+BC}{BD}BA​+DC​=BDAD+BC​ 即可。

那么就可以求出 ∑i=1nG(aix)\sum\limits_{i=1}^nG(a_ix)i=1∑n​G(ai​x) 的前 mmm 项系数,那么 k![xk]exp⁡(∑i=1nG(aix))k![x^k]\exp\left(\sum\limits_{i=1}^nG(a_ix)\right)k![xk]exp(i=1∑n​G(ai​x)) 的前 mmm 项系数(即答案)也就出来了。

代码如下:

#include<bits/stdc++.h>#define LN 19
#define N 100010
#define lc (k<<1)
#define rc (k<<1|1)
#define ll long long
#define mod 998244353using namespace std;int n,m;
int rev[N<<2];
ll fac[N],ifac[N];
ll w[LN][N<<2][2];
ll a[N<<2],f[N<<2],g[N<<2];
ll ff[N<<2],daof[N<<2],invf[N<<2];
ll daog[N<<2],lng[N<<2];ll poww(ll a,ll b)
{ll ans=1;while(b){if(b&1) ans=ans*a%mod;a=a*a%mod;b>>=1; }return ans;
}void init(int limit)
{for(int bit=0,mid=1;mid<limit;bit++,mid<<=1){int len=mid<<1;ll wn=poww(3,(mod-1)/len);ll iwn=poww(wn,mod-2);ll noww=1,nowiw=1;for(int j=0;j<mid;j++,noww=noww*wn%mod,nowiw=nowiw*iwn%mod)w[bit][j][0]=noww,w[bit][j][1]=nowiw;}
}void NTT(ll *a,int limit,int opt)
{opt=(opt<0);for(int i=0;i<limit;i++)rev[i]=(rev[i>>1]>>1)|((i&1)*(limit>>1));for(int i=0;i<limit;i++)if(i<rev[i]) swap(a[i],a[rev[i]]);for(int bit=0,mid=1;mid<limit;bit++,mid<<=1){for(int len=mid<<1,i=0;i<limit;i+=len){for(int j=0;j<mid;j++){ll x=a[i+j],y=w[bit][j][opt]*a[i+mid+j]%mod;a[i+j]=(x+y)%mod,a[i+mid+j]=(x-y+mod)%mod;}}}if(opt){ll div=poww(limit,mod-2);for(int i=0;i<limit;i++)a[i]=a[i]*div%mod;}
}void getinv(ll *f,ll *g,int n)
{g[0]=poww(f[0],mod-2);int now=2;for(;now<(n<<1);now<<=1){int limit=now<<1;for(int i=0;i<now;i++) ff[i]=f[i];NTT(ff,limit,1),NTT(g,limit,1);for(int i=0;i<limit;i++) g[i]=(2ll*g[i]%mod-ff[i]*g[i]%mod*g[i]%mod+mod)%mod;NTT(g,limit,-1);for(int i=now;i<limit;i++) g[i]=0;}for(int i=0;i<now;i++) ff[i]=0;for(int i=n;i<now;i++) g[i]=0;
}void getdao(ll *f,ll *g,int n)
{g[n-1]=0;for(int i=0;i<n-1;i++)g[i]=(i+1)*f[i+1]%mod;
}void getint(ll *f,ll *g,int n)
{g[0]=0;for(int i=1;i<n;i++)g[i]=poww(i,mod-2)*f[i-1]%mod;
}void getln(ll *f,ll *g,int n)
{getdao(f,daof,n);
//  printf("daof=");
//  for(int i=0;i<n;i++)
//      printf("%lld ",daof[i]);
//  puts("");getinv(f,invf,n);
//  printf("invf=");
//  for(int i=0;i<n;i++)
//      printf("%lld ",invf[i]);
//  puts("");int limit=1;while(limit<(n<<1)) limit<<=1;NTT(daof,limit,1),NTT(invf,limit,1);for(int i=0;i<limit;i++)daog[i]=daof[i]*invf[i]%mod;NTT(daog,limit,-1);getint(daog,g,n);for(int i=0;i<limit;i++)daof[i]=invf[i]=daog[i]=0;
}void getexp(ll *f,ll *g,int n)
{g[0]=1;int now=2;for(;now<(n<<1);now<<=1){int limit=now<<1;getln(g,lng,now);for(int i=0;i<now;i++) ff[i]=(f[i]-lng[i]+mod)%mod;ff[0]=(ff[0]+1)%mod;NTT(g,limit,1),NTT(ff,limit,1);for(int i=0;i<limit;i++)g[i]=g[i]*ff[i]%mod;NTT(g,limit,-1);for(int i=0;i<limit;i++) ff[i]=0;}for(int i=0;i<now;i++) lng[i]=0;
}ll fzl[N<<2],fzr[N<<2],fml[N<<2],fmr[N<<2],A[N<<2],B[N<<2];
vector<ll>fz[N<<2],fm[N<<2];void solve(int k,int l,int r)
{if(l==r){fz[k].push_back(1);fm[k].push_back(1);fm[k].push_back(mod-a[l]);return;}int mid=(l+r)>>1;solve(lc,l,mid),solve(rc,mid+1,r);int limit=1;while(limit<=(r-l+1)) limit<<=1;for(int i=0,size=fz[lc].size();i<size;i++) fzl[i]=fz[lc][i];for(int i=0,size=fz[rc].size();i<size;i++) fzr[i]=fz[rc][i];for(int i=0,size=fm[lc].size();i<size;i++) fml[i]=fm[lc][i];for(int i=0,size=fm[rc].size();i<size;i++) fmr[i]=fm[rc][i];NTT(fzl,limit,1),NTT(fzr,limit,1),NTT(fml,limit,1),NTT(fmr,limit,1);for(int i=0;i<limit;i++){A[i]=(fzl[i]*fmr[i]%mod+fzr[i]*fml[i]%mod)%mod;B[i]=fml[i]*fmr[i]%mod;}NTT(A,limit,-1),NTT(B,limit,-1);for(int i=0;i<=r-l+1;i++)fz[k].push_back(A[i]),fm[k].push_back(B[i]);for(int i=0;i<limit;i++) fzl[i]=fzr[i]=fml[i]=fmr[i]=A[i]=B[i]=0;fz[lc].clear(),fz[rc].clear(),fm[lc].clear(),fm[rc].clear();
}void print(ll *a,int l,int r,string s)
{cout<<s<<"=";for(int i=l;i<=r;i++)cout<<a[i]<<" ";cout<<endl;
}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%lld",&a[i]);int limit=1;while(limit<=(m<<1)) limit<<=1;init(limit);fac[0]=1;for(int i=1;i<=m+1;i++) fac[i]=fac[i-1]*i%mod;ifac[m+1]=poww(fac[m+1],mod-2);for(int i=m;i>=0;i--) ifac[i]=ifac[i+1]*(i+1)%mod;for(int i=0;i<=m;i++) f[i]=ifac[i+1];getln(f,g,m+1);solve(1,1,n);for(int i=0;i<=n;i++) fzl[i]=fz[1][i],fml[i]=fm[1][i];getinv(fml,A,m+1);NTT(fzl,limit,1),NTT(A,limit,1);for(int i=0;i<limit;i++)A[i]=A[i]*fzl[i]%mod;NTT(A,limit,-1);for(int i=0;i<=m;i++)g[i]=g[i]*A[i]%mod;for(int i=0;i<limit;i++) A[i]=0;getexp(g,A,m+1);for(int i=1;i<=m;i++)printf("%lld ",fac[i]*A[i]%mod);return 0;
}

【XSY3906】数数题(期望,多项式)相关推荐

  1. R语言KMeans聚类分析确定最优聚类簇数实战:期望最大化expectation-maximization准则(确定最优聚类簇数)

    R语言KMeans聚类分析确定最优聚类簇数实战:期望最大化expectation-maximization准则(确定最优聚类簇数) 目录

  2. 数数题(计数类 DP)做题记录

    数数题(计数类 DP)做题记录 CF1657E Star MST 我们称张无向完全图是美丽的当且仅当:所有和 \(1\) 相连的边的边权之和等于这张完全图的最小生成树的边权之和. 完全图点数为 \(n ...

  3. CSDN挑战编程——《金色十月线上编程比赛第一题:小女孩数数》

    金色十月线上编程比赛第一题:小女孩数数 题目详情: [金色十月线上编程比赛规则] 一个小女孩正在用左手手指数数,从1数到n.她从拇指算作1开始数起,然后,食指为2,中指为3,无名指为4,小指为5.接下 ...

  4. js设计一个带开关的时钟_数电题:三个按键一个灯

    有这样一道数电题: 一个LED发光二极管由A.B.C三个独立按键控制,要求按压A.B.C三个按键中的任意一个都能对LED实现亮.灭控制(即每按压一次按键,LED发光状态改变一次).请用D触发器或JK触 ...

  5. 聊城大学计算机2014高数试题,高数真题14-15.docx

    高数真题14-15 河南省2014年普通高校等学校选拔优秀本科毕业生本科阶段学习考试高等数学选择题(每小题2分,共60分)函数的定义域是 ( ) A. B. C. D.2.已知, 则 ( ) A. B ...

  6. 15拆分成3个不同的自然数_小学二年级奥数训练题之分拆

    做奥数题有助于我们能力的提升,不仅在数学方面,其他方面也是很有帮助的,主要是让我们多动脑思考.下面为大家带来小学二年级奥数训练题. 小学二年级奥数训练题 整数分拆问题是一个古老而又十分有趣的问题.所谓 ...

  7. 2001考研数一真题解析

    2001考研数一真题解析

  8. c语言如何统计输赢次数,C语言模拟掼蛋中一方最多炸弹数的数学期望

    掼蛋是一种在江苏.安徽地区广为流传的牌类游戏.由地方的扑克牌局"跑得快"."八十分"发展而来.牌局采用四人结对竞赛,输赢升级的方式进行.由于使用两副牌,并且有& ...

  9. 南阳oj入门题-数数

    /** 数数 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 我们平时数数都是喜欢从左向右数的,但是我们的小白同学最近听说德国人数数和我们有些不同,他们正好和我们相反,是从右 ...

  10. 【HDU3530】 [Sdoi2014]数数 (AC自动机+数位DP)

    3530: [Sdoi2014]数数 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 682  Solved: 364 Description 我们称 ...

最新文章

  1. cannot import name #39get_all_providers#39
  2. 如何优雅的分析 Redis 里存了啥?
  3. 数据库-统计信息相关资料
  4. python工程师认证证书_python工程师-day83
  5. 阿里工程师如何叫外卖?99%的人猜不到
  6. 16 分频 32 分频是啥意思_CD4017是什么?十进制计数器分频器CD4017的逻辑功能呢?...
  7. 【深度优先搜索】计蒜客:最大蛋糕(最大连通块)
  8. Cassandra -- Cassandra 3.0版本安装
  9. ps去水印教程_叫板 PS!去水印、抠图、加滤镜,这款超强修图应用到底什么来头...
  10. leapmotion和HTC和投影视角注意事项
  11. html中id和name的异同
  12. Windows 7各版本比较
  13. python 异步定时任务
  14. java hashset retain_Java HashSet retainAll()用法及代码示例
  15. 扩展欧几里得算法超详解
  16. 抽样分布(卡方分布、t分布、F分布)
  17. 我在上海奋斗五年 从月薪3500到700万
  18. [系统] Deepin系统常见问题解决(持续更新)
  19. 【附源码】计算机毕业设计java兴发农家乐服务管理系统设计与实现
  20. vmware 提示该虚拟机正在使用中

热门文章

  1. 第71天-内网安全-域横向网络传输应用层隧道技术
  2. C语言人五英尺七英寸,5尺7寸(5尺7寸是多高美国)
  3. 美创科技携零信任数据安全,亮相云安全联盟大中华区大会
  4. 代码随想录第十四天 二叉树基础 LeetCode 144、145、94
  5. C语言编程-7_4 字符统计
  6. 输入一个数判断一个数是不是质数,如果是质数输出“YES“,否则输出“NO“
  7. Spark - RangePartitioner rangeBounds 生成 源码分析 实践
  8. Android studio中出现keeps stopping现象
  9. FidMTF: An MTF Estimator (FidMTF:一种MTF估计方法)
  10. 手机控制树莓派驱动投影仪DLPDLCR230NPEVM