Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33144 | baka24 | 【S】T1 | C++ | 通过 | 100 | 823 MS | 8076 KB | 1156 | 2024-10-04 15:26:58 |
#include<bits/stdc++.h> using namespace std; #define int long long int read(){int x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return x*f;} const int MAXN=500010,N=510,Mod=998244353; int Pow(int x,int y){int rt=1;while(y){if(y&1)rt=rt*x%Mod;x=x*x%Mod,y>>=1;}return rt;} int n,m,jc[MAXN],ny[MAXN]; int ans; int C(int x,int y){return x>=0&&y>=0&&x>=y?jc[x]*ny[y]%Mod*ny[x-y]%Mod:0;} int C1(int x,int y){return x>=y&&x>0?C(x-1,y-1):(y==0?1:0);} int C0(int x,int y){return x>=0?x==0&&y==0?1:C(x+y-1,y-1):0;} void slv(){ n=read(),m=read(); jc[0]=ny[0]=1; for(int i=1;i<=MAXN-5;i++)jc[i]=jc[i-1]*i%Mod,ny[i]=Pow(jc[i],Mod-2); for(int i=0;i<=m;i++){ int tmp=0; for(int j=0;j<=n;j++){ tmp+=C1(m-i,j)*C0(m-i,n-j)%Mod*C(n,j)%Mod; tmp%=Mod; // cout<<C1(m-i,j)<<" "<<C0(m-i,n-j)<<" "<<C(n,j)<<endl; } // cout<<i<<" "<<tmp<<endl; ans+=tmp*C0(i,n)%Mod*(2*m-2*i)%Mod*(2*m-2*i)%Mod; ans%=Mod; } printf("%lld",ans); } signed main(){ slv(); return 0; }