Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33228 masppy 【S】T1 C++ 通过 100 869 MS 1824 KB 1196 2024-10-04 17:17:02

Tests(10/10):


#include<bits/stdc++.h> #define ll long long #define lson pos<<1 #define rson pos<<1|1 using namespace std; const int maxn=2e5+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){ if(m>n) return 0; 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]=1ll; for(int i=1;i<=n+m;i++){ fnt[i]=(fnt[i-1]*i*1ll)%mod; } bck[n+m]=q_pow(fnt[n+m],mod-2); for(ll i=n+m-1;i>=1;i--) bck[i]=bck[i+1]*(i+1ll)%mod; ll ans=0; for(int i=0;i<=m;i++){ ll tmp=4ll*(m-i)*(m-i)%mod; tmp=(tmp*calc(n+i-1,i))%mod; for(int j=0;j<=n;j++){ //cout<<tmp<<" "<<calc(n+1-1,i)<<" "<<calc(n,j)<<" "<<calc(m-i-1,j-1)<<" "<<calc(m+n-i-j-1,m-i)<<endl; ll tmp1=(tmp*calc(n,j)%mod*calc(m-i-1,j-1)%mod*calc(n+m-i-j-1,m-i))%mod; // cout<<ans<<" "<<tmp1<<endl; ans=(ans+tmp1)%mod; } } printf("%lld",ans); return 0; }


测评信息: