比赛 |
2025.1.18 |
评测结果 |
AAAAAAAAAA |
题目名称 |
建设城市(民间数据) |
最终得分 |
100 |
用户昵称 |
李奇文 |
运行时间 |
0.060 s |
代码语言 |
C++ |
内存使用 |
4.24 MiB |
提交时间 |
2025-01-18 11:13:33 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5,p=998244353;
ll m,n,x,y,ans,fc[N],ifc[N];
ll ksm(ll a,ll b){
ll s=1,m=a;
while(b){
if(b&1)s=s*m%p;
m=m*m%p;
b>>=1;
}
return s;
}
ll c(ll m,ll n){
return fc[n+m-1]*ifc[n]%p*ifc[m-1]%p;
}
int main(){
freopen("noi_online2020_city.in","r",stdin);
freopen("noi_online2020_city.out","w",stdout);
cin>>m>>n>>x>>y;
fc[0]=1;
for(int i=1;i<=m+n;i++) fc[i]=fc[i-1]*i%p;
ifc[m+n]=ksm(fc[m+n],p-2);
for(int i=m+n-1;~i;i--) ifc[i]=ifc[i+1]*(i+1)%p;
if(x<=n&&y>n){
for(int i=1;i<=m;i++) ans=(ans+c(i,x-1)*c(m-i+1,n-x)%p*c(m-i+1,y-n-1)%p*c(i,2*n-y))%p;
}
else{
ans=c(m,n)*c(m,n+x-y)%p;
}
cout<<ans<<endl;
return 0;
}