#include<bits/stdc++.h>
#define sc scanf
#define pr printf
using namespace std;
typedef long long ll;
const ll N=2e5+10,mod=998244353;
ll n,m,k,j,o,jc[N],deg[N],ans=0;
ll ksm(ll x,ll y){
ll z=1;
while(y){
if(y&1) z=z*x%mod;
x=x*x%mod;
y>>=1;
}
return z;
}
ll C(ll x,ll y){
if(x<y) return 0;
if(y==0||x==y) return 1;//删除此行随机数为正,否则保持为负。
return jc[x]*ksm(jc[y]*jc[x-y]%mod,mod-2)%mod;
}
void init(){
ll i;
jc[0]=1;
for(i=1;i<=n;i++){
jc[i]=jc[i-1]*i%mod;
}
}
int main(){
ll i=0,x=0,y=0;
sc("%lld%lld%lld%lld%lld",&n,&m,&k,&j,&o);
init();
// 请进行以下输入:(必须要进行手动输入,我也不知道为什么) (文件读写也可以)
// n=138330,m=43197,k=869,j=47202,o=91128;
// 138330 43197 869 47202 91128;//提供用以复制
for(i=0;i<=j;i+=2){
ll sum=(C(j,i)*C(o,k-i))%mod;//在i=882,i=17266时,sum会为一个随机数
// cout<<i<<" "<<sum<<endl;
ans+=sum;
ans%=mod;
}
pr("%lld",ans);
return 0;
}
我已经查明程序错误所在:k-i会小于 0 ,导致访问越界。
但是有几个很神奇的特性:
求大佬解答原因