求助不知道为什么一直20分(WA)
查看原帖
求助不知道为什么一直20分(WA)
305296
云雷心柠檬听楼主2022/8/11 22:52
#include<bits/stdc++.h>
using namespace std;
const int N=500009;
int n,m,ans[N],cnt[N],nA,nC;

void input(){
	cin>>n>>m;
} 

void mul(int s[],int &l,int x){
	for(int i=1;i<=l;i++){
		s[i]*=x;
	}
	for(int i=1;i<=l;i++){
		s[i+1]+=s[i]/10;
		s[i]%=10;
		if(i==l&&s[i+1]>0) l++;
	}
}

void mns(int s[],int &l,int t[]){
	for(int i=1;i<=l;i++){
		s[i]-=t[i];
		if(s[i]<0){
			s[i]+=10;
			s[i+1]--;
		}
	}
	while(s[l]==0) l--;
}

void solve(){
	ans[1]=2; nA=1;
	for(int i=2;i<=n+1;i++)	mul(ans,nA,i);
	for(int i=2;i<=m;i++)	mul(ans,nA,i);
	int x=n+2;
	for(int i=1;i<=m;i++){
		mul(ans,nA,x);
		x--;
//		cout<<nA<<endl;
	}
	cnt[1]=1; nC=1;
	for(int i=2;i<=n+2;i++)	mul(cnt,nC,i);
	for(int i=2;i<=m;i++)	mul(cnt,nC,i);
	x=n+3;
	for(int i=1;i<=m;i++){
		mul(cnt,nC,x);
		x--;
	} 
	mns(cnt,nC,ans);
	for(int i=nC;i>=1;i--) cout<<cnt[i];
	if(nC==0) cout<<0;
}

int main(){
	input();
	solve();
	return 0;
}
2022/8/11 22:52
加载中...