组合数

Posted guaguastandup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合数相关的知识,希望对你有一定的参考价值。

组合数

(1+3+5+...+(2*n-1) = n^2)

(2+4+6+...+(2*n) = n*(n+1))

(1+2+3+...+n = frac{n*(n+1)}{2})

(C_{n}^{m}= C_{n-1}^{m-1} + C_{n-1}^m)

模板

取模

int f[maxn],inv[maxn];
int qpow(int a,int b){
    int res=1;
    while(b){
        if(b&1)res=res*a%mod;
        a=a*a%mod;;
        b/=2;
    }
    return res;
}
void init(){
    f[0]=1;
    for(int i=1;i<=maxn-1;i++)f[i]=f[i-1]*i%mod;
    inv[maxn-1]=qpow(f[maxn-1],mod-2);
    for(int i=maxn-2;i>=0;i--)inv[i]=inv[i+1]*(i+1)%mod;
}
int C(int n,int m){
    return f[n]*inv[m]%mod*inv[n-m]%mod;
}

数值较小,且不可以取模

const int maxn = 1000 + 5;
double c[maxn][maxn];
void init() {
    c[0][0] = 1;
    for (int i = 1; i < maxn;i++) {
        c[i][0] = c[i][i] = 1;
        for (int j = 1;j<i;j++) {
            c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
        }
    }
}

以上是关于组合数的主要内容,如果未能解决你的问题,请参考以下文章

如何组合绑定片段而不将它们包装在 XML 文字中

48个值得掌握的JavaScript代码片段(上)

精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!(转载)

片段组合在 Relay 中是如何工作的?

如何将片段中的 ListView 对象的数据传递给 Activity?

为 memcached 和 Rails 组合片段和对象缓存的最佳方式