打牌的贝贝

打牌的贝贝


「算法入门笔记」卡特兰数

满足条件的01序列

给出了卡特兰数最基本的使用情景
其中:
卡特兰数通项:\(C_n = \frac{C_{n+1}^{m}}{n+1} \quad\)
卡特兰数满足以下递推式:
\(C_1 = 1,C_n = C_{n-1}\frac{4*n-2}{n+1} \quad\)

int fact[N], infact[N];
int qmi(int a, int b)
{
    int res = 1;
    while (b)
    {
        if (b & 1)
            res = res * a % MOD;
        a = a * a % MOD;
        b >>= 1;
    }
    return res;
}
void init()
{
    fact[0] = infact[0] = 1;
    for (int i = 1; i < N; i++)
        fact[i] = fact[i - 1] * i % MOD;

    infact[N - 1] = qmi(fact[N - 1], MOD - 2);

    for (int i = N - 2; i; i--)
        infact[i] = infact[i + 1] * (i + 1) % MOD;
}
int C(int a, int b)
{
    return fact[a] * infact[a - b] % MOD * infact[b] % MOD;
}
void solve()
{
    cin >> n;
    cout << C(2 * n, n) * qmi(n + 1, MOD - 2) % MOD << endl;
}
posted @ 2023-04-03 08:20  347Foricher  阅读(25)  评论(0)    收藏  举报