传送门:bzoj1856
题解
卡特兰数裸题
代码
#include<bits/stdc++.h>
#define RI register
using namespace std;
const int mod=20100403;
typedef long long ll;
const int N=2e6+10;
int fac[N],n,m;
inline int mul(int x,int y){return 1ll*x*y%mod;}
inline int dc(int x,int y){x-=y;return x<0?x+mod:x;}
inline int fp(int x,int y)
{
int re=1;
for(;y;y>>=1,x=mul(x,x))
if(y&1) re=mul(re,x);
return re;
}
inline int C(int n,int m)
{return mul(fac[n],mul(fp(fac[m],mod-2),fp(fac[n-m],mod-2)));}
int main(){
RI int i,j;
scanf("%d%d",&n,&m);
fac[0]=1;
for(i=1;i<=n+m;++i) fac[i]=mul(fac[i-1],i);
printf("%d\n",dc(C(n+m,m),C(n+m,m-1)));
}