题目
#include<bits/stdc++.h>
using namespace std;
int sum1[10000005],sum2[10000005],ans[10000005],len1,len2,n,m,mod=1000000;
inline void mul(int a[],int &len,int x){
int flag1=0,flag2=0;
for(register int i=1;i<=len;i++){
flag1=a[i]*x;
a[i]=flag1%mod+flag2;
flag2=flag1/mod;
}
if(flag2) a[++len]=flag2;
}
int main(){
scanf("%d%d",&n,&m);
sum1[1]=sum2[1]=len1=len2=1;
for(int i=n+3,l=1;l<=m;i--,l++) mul(sum1,len1,i);
for(int i=n+2,l=1;l<=n+2;i--,l++) mul(sum1,len1,i);
mul(sum2,len2,2);
for(int i=n+2,l=1;l<=m;i--,l++) mul(sum2,len2,i);
for(int i=n+1,l=1;l<=n+1;i--,l++) mul(sum2,len2,i);
for(int i=1;i<=len1;i++){
if(sum1[i]<sum2[i]){
sum1[i+1]--;
sum1[i]+=mod;
}
ans[i]=sum1[i]-sum2[i];
}
if(!ans[len1]) len1--;
printf("%d",ans[len1]);
for(int i=len1-1;i;i--) printf("%06d",ans[i]);
}