为何本题无法使用如下代码求解组合数?
查看原帖
为何本题无法使用如下代码求解组合数?
380042
piggy123楼主2022/12/20 21:24
ll C(ll n,ll m){
	if (n<m)return 0;
	if (n<0||m<0)return 0;
	
	ll ans=1,vis=0;
	ll lst[11];
	for (ll i=1;i<=m;i++){
		lst[i]=n-i+1;
		for (ll j=1;j<=m;j++){
			if (vis>>(j-1)&1)continue;
			if (lst[i]%j==0){
				lst[i]/=j;vis|=1<<(j-1);
			}
		}
	}
	for (ll i=1;i<=m;i++)ans*=lst[i],ans%=mod;
	return ans;
}

将这段代码换为下面这段后即可AC:

fac=m!
ll C(ll n,ll m){
	ll MOD=fac*mod;
	ll ret=1;
	for(ll i=1;i<=m;i++)
		ret=(ret*(n-i+1))%MOD;
	return ret/fac%mod;
}
2022/12/20 21:24
加载中...