显示老师上课讲的公式:
fi=Cn−ii−1⋅An−in−i⋅222i−n−i⋅(22i−n−i)!(2i−n−1)!
和
pi=∑i=1nfifi
最后输出 每一个 pi 。(还要mod 998244353)
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
int T,n,MOD=998244353;
int jc[1000001],f[1000001],p[1000001];
void init(int x)
{
jc[0]=1;
for(int i=1;i<=x;i++) jc[i]=jc[i-1]*i%MOD;
}
int ksm(int x,int y,int p)
{
int ret=1;
while(y)
{
if(y&1)
{
ret=ret*x%p;
}
x=x*x%p;
y>>=1;
}
}
int inv(int x,int p)
{
return ksm(x,p-2,p);
}
int C(int x,int y,int p)
{
return jc[x]*inv(jc[y]*jc[x-y],MOD)%MOD;
}
int calcfi(int ii)
{
int t1=C(n-ii,ii-1,MOD)*jc[n-ii]%MOD;
int t2=inv(jc[2*ii-n-1]*inv(ksm(2,(2*ii-n-1),MOD)*jc[2*ii-n-ii]/2,MOD),MOD)%MOD;
return t1*t2%MOD;
}
signed main()
{
init(1e6);
scanf("%lld",&T);
while(T--)
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)
calcfi(i);
int avv=0;
for(int i=1;i<=n;i++)
avv=(avv+f[i])%MOD;
avv=inv(avv,MOD);
for(int i=1;i<=n;i++)
p[i]=f[i]*avv%MOD;
for(int i=1;i<=n;i++)
printf("%lld ",p[i]);
printf("\n");
}
return 0;
}
求调qwq!