Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33144 baka24 【S】T1 C++ 通过 100 823 MS 8076 KB 1156 2024-10-04 15:26:58

Tests(10/10):


#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; }


测评信息: