给定 n 个 0 和 n 个 1,它们将按照某种顺序排成长度为 2n 的序列,则它们能排列成的所有序列中,能够满足任意前缀序列中 0 的个数都不少于 1 的个数的序列有 个(出栈匹配 / 括号匹配合法方案都属于卡特兰数)
int qpow(int a, int b, int p) {int res = 1;while (b) {if (b & 1)res = res*a%p;a = a*a%p;b >>= 1;}return res;}signed main() {int n;cin >> n;int a = n*2, b = n;int ans = 1;for (int i = a; i > a-b; i--)ans = ans*i%MOD;for (int i = 1; i <= b; i++)ans = ans*qpow(i, MOD-2, MOD)%MOD;ans = ans*qpow(n+1, MOD-2, MOD)%MOD;cout << ans << "\n";return 0;}
