[数学记录]P4921 烧情侣
command_block · · 个人记录
题意:
现在问题就变成了求
设
且
反演过来即
推到这个式子,已经足够AC简单版了。
#include<algorithm>
#include<cstdio>
#define ll long long
#define mod 998244353
#define Maxn 2050
using namespace std;
ll ifac[Maxn],fac[Maxn],p2[Maxn];
ll C(ll n,ll m)
{return fac[n]*ifac[m]%mod*ifac[n-m]%mod;}
ll D[Maxn];
int main()
{
fac[0]=fac[1]=ifac[0]=ifac[1]=1;
for (int i=2;i<=2005;i++)
ifac[i]=(ifac[mod%i]*(mod-mod/i))%mod;
p2[0]=1;p2[1]=2;
for (int i=2;i<=2005;i++){
fac[i]=fac[i-1]*i%mod;
ifac[i]=ifac[i]*ifac[i-1]%mod;
p2[i]=(p2[i-1]<<1)%mod;
}
for (int i=0;i<=1005;i++){
ll buf=1;
for (int j=0;j<=i;j++){
ll sav=C(i,j);
D[i]=(D[i]+sav*sav%mod*buf%mod
*fac[j]%mod*fac[(i-j)<<1])%mod;
buf=buf*(mod-2)%mod;
}
}int T;scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
for (int i=0;i<=n;i++){
ll ans=C(n,i);
ans=ans*ans%mod*fac[i]%mod*p2[i]%mod*D[n-i]%mod;
printf("%lld\n",ans);
}
}
return 0;
}
加强版可见 多项式计数杂谈