Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33199 | LYLAKIOI | 【S】T1 | C++ | 运行超时 | 70 | 1000 MS | 1812 KB | 1490 | 2024-10-04 16:51:04 |
#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define pi pair<int,int> #define p1 first #define p2 second #define p_b push_back #define m_p make_pair typedef long long ll; using namespace std; const int maxn=2e5+10,mod=998244353; inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; }int n,m,jc[maxn],jc_inv[maxn]; int qpow(int a,int b){ int res=1; while(b){ if(b&1)res=res*1ll*a%mod; a=a*1ll*a%mod;b>>=1; }return res; } int C(int n,int m){if(n>m)return 0;return jc[m]*1ll*jc_inv[m-n]%mod*1ll*jc_inv[n]%mod;} int ball(int n,int m){return C(n-1,n+m-1);} int ball1(int n,int m){return C(n-1,m-1);} void slv(){ n=read(),m=read(); jc[0]=jc_inv[0]=1;up(i,1,2e5)jc[i]=jc[i-1]*1ll*i%mod,jc_inv[i]=qpow(jc[i],mod-2); int res=0; up(i,0,m){ int s=m-i; int p=ball(n,i); int dif=(m-i)*2;dif=dif*1ll*dif%mod; up(j,1,n){ int w=C(j,n)*1ll*ball1(j,s)%mod*1ll*ball(n-j,s)%mod*1ll*p%mod; //cout<<"! "<<dif<<" "<<w<<" "<<C(j,n)<<endl; (res+=w*1ll*dif%mod)%=mod; } }cout<<res; }int main(){ //freopen("sequence.in","r",stdin); // freopen("sequence.out","w",stdout); slv(); fclose(stdin); fclose(stdout); return 0; }