30行自闭了 悬关求调qwq
查看原帖
30行自闭了 悬关求调qwq
747882
_adil_楼主2023/11/14 11:09
#include<bits/stdc++.h>
#define N 200009
#define INF 0x3f3f3f3f
#define mod 998244353
#define int long long
using namespace std;
typedef long double ldb;
typedef pair<int,int> pii;
int t,inv[N],finv[N],f[N],n,m,x,y,ans;
void init(){
  inv[1]=1,inv[0]=1;
  for(int i=2;i<=200005;i++)inv[i]=(mod-mod/i)*inv[mod%i]%mod;
  finv[1]=1,f[1]=1,finv[0]=1,f[0]=1;
  for(int i=2;i<=200005;i++)finv[i]=(finv[i-1]*inv[i])%mod,f[i]=(f[i-1]*i)%mod;
}
int ask(int n,int m){
     if(n==m||n<=0||m<=0){return 1;}
    else return f[n]*finv[m]%mod*finv[n-m]%mod;
}
signed main(){
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin>>m>>n>>x>>y;
  init();
  if(x<=n&&y>n){
    for(int i=1;i<=m;i++)
    ans=(ans+ask(i+x-2,x-1)*ask(n-x+m-i,n-x)%mod*ask(y-n+m-i-1,y-n-1)%mod*ask(2*n-y+i-1,2*n-y)%mod)%mod;
  }else {
    ans=ask(n+m-1,n-1)*ask(n+x-y+m-1,n+x-y-1)%mod;
  }
  cout<<ans<<endl;
  return 0;
}
2023/11/14 11:09
加载中...