类Catalan数定义
按照推倒Catalan数的方法推倒这题的公式
答案即为
Cmn+m−Cm−1n+m
/**************************************************************
Problem: 1856
User: di4CoveRy
Language: C++
Result: Accepted
Time:800 ms
Memory:1288 kb
****************************************************************/
#include <iostream>
#include <cstdio>
#define mod 20100403LL
using namespace std;
typedef long long LL;
LL n,m;
LL qpow(LL a,LL b) {
if (b == 0) return 0;
if (b == 1) return a;
if (b % 2 == 0) {
LL tmp = qpow(a,b/2);
return (tmp * tmp) % mod;
} else {
LL tmp = qpow(a,b-1);
return (tmp * a) % mod;
}
}
LL C(LL n,LL m) {
LL JCN = 1LL , JCM = 1LL , JCNM = 1LL;
for (int i=1;i<=n;i++) JCN = JCN * i % mod;
for (int i=1;i<=m;i++) JCM = JCM * i % mod;
for (int i=1;i<=n-m;i++) JCNM = JCNM * i % mod;
return (JCN * qpow( (JCM * JCNM) % mod , mod - 2 )) % mod;
}
int main(){
cin >> n >> m;
if (m > n) {
cout << 0 << endl;
return 0;
}
LL ans = (C(n+m,n) - C(n+m,m-1) + mod) % mod;
cout << ans << endl;
return 0;
}