题解:本题主要考查catalan数。
简要题意:n个1和m个0组成字符串,在任意的前k个字符,1的个数不少于0的个数,求这样的字符串的个数。
1.catalan数:本题是catalan数非常规数值分析的变式,答案为C(n+m,n)-C(n+m,n+1)。因为数据很大,不能用公式求。(注意开long long)
代码如下:
#include<iostream>
using namespace std;
int n,m,sum;
int f[2039512];
long long pow(long long x,long long p)
{
long long ans=1;
while(p>0)
{
if(p%2==1)ans=ans*x%20100403;
p/=2;
x=x*x%20100403;
}
return ans;
}
void c()
{
f[0]=1;
for(long long i=1;i<=n+m;i++)f[i]=f[i-1]*i%20100403;
}
long long C(long long n,long long m)
{
return f[n]*pow(f[m]*f[n-m]%20100403,20100401)%20100403;
}
int main()
{
cin>>n>>m;
c();
sum=((C(n+m,n)-C(n+m,n+1))%20100403+20100403)%20100403;
cout<<sum;
return 0;
}