卡特兰数

https://baike.baidu.com/item/%E5%8D%A1%E7%89%B9%E5%85%B0%E6%95%B0/6125746?fr=aladdin

在这里插入图片描述
非常规分析便于记住公式。来源百度词条侵权请联系删除

n个数的进出栈序列种类数

C 2 n n n + 1 \frac{C_{2n}^{n}}{n+1} n+1C2nn
防止超过范围
mod1e9+7



#include <iostream>
#include <stdio.h>
#include <cstring>

#include <vector>
#include <string>
#include <queue>
#include <stack>
#include <algorithm>

#define INF 0x7fffffff
#define EPS 1e-12
#define mod 1000000007
#define PI 3.141592653579798
typedef long long ll;

using namespace std;

ll POW(ll num,ll k){

    ll ans=1;

    num = num % mod;
    while(k>0)
    {
        if(k&1){
            num = num % mod;
            ans*=num;

        }
        num=num*num % mod;
        k>>=1;

    }
    return ans;
}

ll fac(ll n){
    ll ans = 1;
    while(n>=2){
        ans *= n;
        n--;
    }
return ans;
}
ll C(ll n,ll m){
    return fac(n)/fac(n-m)/fac(m);

}

ll A(ll n,ll m){
    return fac(n)/fac(n-m);

}
ll ktl(ll n){
    return C(2*n,n)/(n+1);
}



void exgcd(ll a,ll b,ll& d,ll& x,ll& y)
{
    if(!b) { d = a; x = 1; y = 0; }
    else{ exgcd(b, a%b, d, y, x); y -= x*(a/b); }
}

ll inv2(ll a, ll p)
{
    ll d, x, y;
    exgcd(a, p, d, x, y);
    return d == 1 ? (x+p)%p : -1;
}


int main()
{
    ll n;
    scanf("%lld",&n);
    ll a =ktl(n);
    cout<<a<<endl;
    return 0;
}


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页