提交时间:2024-10-04 16:49:54
运行 ID: 33196
#include<bits/stdc++.h> #define ll long long #define lson pos<<1 #define rson pos<<1|1 using namespace std; const int maxn=1e5+10; const ll mod=998244353; const ll inf=1e9+10; ll n,m,ans=0; ll a[maxn],fnt[maxn],bck[maxn]; ll q_pow(ll a,ll b){ ll tmp=1ll; while(b){ if(b&1){ tmp=(tmp*a)%mod; } b>>=1; a=(a*a)%mod; } return tmp; } ll calc(int n,int m){ return fnt[n]*bck[n-m]%mod*bck[m]%mod; } int main(){ // freopen("sequence.in","r",stdin); // freopen("sequence.out","w",stdout); scanf("%lld%lld",&n,&m); fnt[0]=bck[0]=1; for(int i=1;i<=n+m;i++){ fnt[i]=fnt[i-1]*i%mod; bck[i]=q_pow(fnt[i],mod-2); } ll ans=0; for(int i=0;i<=m;i++){ for(int j=0;j<=n;j++){ ll tmp=4*(m-i)*(m-i); tmp=(tmp*calc(n+i-1,i)%mod*calc(n,j)%mod*calc(m-i-1,j-1)%mod*calc(n+m-i-j-1,m-i))%mod; ans=(ans+tmp)%mod; } } printf("%lld",ans); return 0; }