第一种
ll mod = 1e9+7;
ll MAXN = 1000005;
ll jiecheng[1000005];

void init(){
    jiecheng[0]=1;
    jiecheng[1]=1;
    for (int i=2;i<MAXN;i++) jiecheng[i] = i * jiecheng[i-1] % mod;
}
ll quick(ll x,ll y){
    ll ans=1;
    while(y){
        if(y&1) ans = ans * x % mod;
        x=((x%mod)*(x%mod))%mod;
        y/=2;
    }
    return ans;
}

ll C(ll a, ll b){
    return (jiecheng[a] % mod)*(quick(jiecheng[b] * jiecheng[a-b] % mod,mod-2))%mod;
}
第二种
ll a[2005][2005];
const ll mod = 998244353;
void init()       // Cnk -> n、k、取余是mod
{
    ll sum = 1;
    a[0][0] = 1;
    for(int i = 1 ; i <= 2000 ; i++)
    {
        a[i][0] = 1;
        for(int j = 1; j<=i; j++)  //k从1开始计算,到n-1结束
        {
            a[i][j] = (a[i-1][j] + a[i-1][j-1]) % mod;
        }
    }
}