NOIp 数学知识点总结

推荐阅读 NOIp 基础数论知识点总结: https://www.cnblogs.com/greyqz/p/9473370.html

排列组合

\[ \displaystyle C_n^m = C_n^{n-m} \]

\[ \displaystyle \sum_{i=0}^n C_n^i =\sum_{i=0}^nC_n^i1^{i}\times 1^{n-i}=(1 + 1)^n= 2^n \]

\[ \displaystyle C_n^m = \frac{n!}{m!(n-m)!}= \frac{(n-1)!}{m!(n-m-1)!}\times\frac{n}{n-m}=\frac{(n-1)!}{m!(n-m-1)!}\times(1+\frac{m}{n-m})=C_{n-1}^{m}+\frac{(n-1)!}{(m-1)!(n-m)!}= C_{n-1}^m+C_{n-1}^{m-1} \]

\[ \displaystyle \sum_{i=0}^r C_{n+i}^i = C_{n+r+1}^r \]

\[ \displaystyle \sum_{i=0}^n i\times C_n^i =\sum_{i=1}^{n}n\times C_{n-1}^{i-1}=n\sum_{i=0}^{n-1}C_{n-1}^{i-1}= n2^{n-1} \]

\[ \displaystyle C_n^m\times C_m^r=C_n^r\times C_{n-r}^{m-r} \]

\[ \displaystyle C_n^0-C_n^1+C_n^2+\cdots +C_n^m=0 \]

组合数基本处理 \(O(n)\)

const int N = 1e5 + 7, MOD = 1e9 + 7;
int add(int a, int b) { if ((a += b) >= MOD) a -= MOD; return a; }
int mul(int a, int b) { return ll(a) * b % MOD; }
int C(int a, int b) { return mul(jc[a], mul(ijc[a - b], ijc[b])); }
int qpow(int a, int b) { 
    int r = 1;
    for (; b; b >>= 1) {
        if (b & 1) r = mul(r, a);
        a = mul(a, a);
    }
    return a;
}
int jc[N], ijc[N];
void ini() {
    jc[0] = 1; for (int i = 1; i < N; i++) jc[i] = mul(jc[i - 1], i);
    ijc[N - 1] = qpow(jc[N - 1], MOD - 2);
    for (int i = N - 2; i >= 0; i--) ijc[i] = mul(ijc[i + 1], i + 1);
}

数学规律

Catalan 数

\[\operatorname{Catalan}(n)=\displaystyle\frac{C_{2n}^n}{n+1}\]

猜你喜欢

转载自www.cnblogs.com/greyqz/p/9841088.html
今日推荐