莫名WA47

substack1,2都过,substack0过不了。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
string s;
int fac[30000005],inv[30000005],ans;
const int mod=2933256077;
int cnt0,cnt1;
int qpow(int x,int y,int mod){
	int res=1;
	while(y){
		if(y&1) res=res*x%mod;
		x=x*x%mod;
		y>>=1;
	}
	return res;
}
void init(){
	for(int i=fac[0]=1;i<=30000000;i++) fac[i]=fac[i-1]*i%mod;
	inv[30000000]=qpow(fac[30000000],mod-2,mod);
	for(int i=29999999;i>=0;i--) inv[i]=inv[i+1]*(i+1)%mod;
}
int C(int x,int y){
	if(y>x) return 0;
	if(y<0) return 0;
	return fac[x]*inv[x-y]%mod*inv[y]%mod;	
}
signed main(){
	cin>>n>>m>>s;
	int len=s.size();
	init();
	for(int i=0;i<len;i++){
		int k=i+1;
		if(s[i]=='0') cnt0++;
		else if(s[i]=='1') cnt1++;
		if(s[k]=='0') ans+=k*C(m-cnt0+cnt1-1,cnt1-1)%mod*C(n-cnt1+cnt0,cnt0)%mod,ans%=mod;
		else if(s[k]=='1') ans+=k*C(m-cnt0+cnt1,cnt1)%mod*C(n-cnt1+cnt0-1,cnt0-1)%mod,ans%=mod;
	}
	cout<<ans;
    return 0;
}
1 个赞

我知道substack1可以暴力,但是我正解错哪了?