求救大佬!!!

image
TLE85

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1004535809;
const ll MAX_N=1e7+10;
ll n,m,fct[MAX_N],inv[MAX_N];
ll qpow(ll a,ll b){
	ll res=1;
	while(b){
		if(b&1)res=(res*a)%mod;
		a=a*a%mod;
		b>>=1;
	}
	return res;
}
void solve(ll l){
	fct[0]=1;
	for(ll i=1;i<=l;i++)fct[i]=(fct[i-1]*i)%mod;
	inv[l]=qpow(fct[l],mod-2);
	for(ll i=l-1;~i;i--)inv[i]=(inv[i+1]*(i+1))%mod;
	return;
}
ll C(ll x,ll y){
	if(y<0||y>x)return 0;
	return fct[x]*inv[y]%mod*inv[x-y]%mod; 
}
int main(){
    // freopen("card.in","r",stdin);
    // freopen("card.out","w",stdout);
	cin>>n>>m;
	solve(n+m);
	ll it=qpow(C(n+m,n),mod-2),p1=0,p2=0;
	for(ll i=0;3*i+1<=n+m;i++)p1=(p1+C(n+m-1-2*i,n-1))%mod; 
	for(ll i=0;3*i+2<=n+m;i++)p2=(p2+C(n+m-1-(2*i+1),n-1))%mod;
	cout<<p1*it%mod<<' '<<p2*it%mod;
	return 0;
}
2 个赞

能不能把图发大一点,我看不见

1 个赞

(帖子已被作者删除)

1 个赞

数组要开打到 2 \times 10^7

1 个赞

因为 1 \le n,m \le 10^7,所以 2\le n+m \le 2 \times 10^7

1 个赞