组合数与二项式定理

鸽巢原理

n+1 只鸽子飞进 n 个笼子,必定有一个笼子出现 2 只鸽子
将 n 个物体,划分为 k 组,那么至少存在一个分组,含有大于或等于 \(\left \lceil \dfrac{n}{k} \right \rceil\) 个物品


组合数

组合数表示:$ {n \choose k} = C_n^k $
组合数基本公式: $C_n^m = \frac{n!}{m! (n - m)!} = \frac{n (n - 1)···(n - m + 1)}{m!} $
组合数递推公式: \(C_n^m=C_{n-1}^{m-1}+C_{n-1}^{m}\)

求解组合数

  • 线性求组合数
    范围 $ a \in [1,N - 1], 0 \le b \le a$
    记得主函数里调用 pre 函数,记得修改 N 和 mod 的值!
const int N = 1e6 + 10, mod = 998244353;
ll fact[N + 1], finv[N + 1];
ll qpow(ll a, ll x){//带模快速幂
	a %= mod;
	ll res = 1;
	while(x){
		if(x & 1) res = res * a % mod;
		x >>= 1;
		a = a * a % mod;
	}
	return res;
}

void pre(){//线性预处理
	fact[0] = 1;
	for(int i = 1; i <= N; ++ i){
		fact[i] = fact[i - 1] * i % mod;
	}
	finv[0] = 1;
	finv[N] = qpow(fact[N], mod - 2);
	for(int i = N - 1; i > 0; -- i)
		finv[i] = finv[i + 1] * (i + 1) % mod;
	return ;
}

ll C(int a, int b){//求取组合数
	if(a < 0 || b < 0) return 1;
	return fact[a] * finv[b] % mod * finv[a - b] % mod;
}

//来自焦佬 暂不建议,因为没有整理过

注意maxm的范围为C(n,m)中,n+m的最大取值。。。

int facinv[maxm + 10], fac[maxm + 10];
ll qpow(int b, int p, int k) {
	ll ans = 1, base = b;
	while(p) {
		if(p & 1) ans = ans * base % k;
		p >>= 1;
		base = base * base % k;
	}
	return ans % k;
}
ll C(ll n, ll m) {
	if(n < m) return 1;
	if(m*2>=n) m=n-m;
	return (ll)fac[n] * facinv[m] % mod * facinv[n - m] % mod;
}
facinv[0] = fac[0] = 1;
for(int i = 1; i <= maxm; i++)
	fac[i] = (ll)fac[i - 1] * i % mod;
for(int i = 1; i <= maxm; i++){
	facinv[i] = facinv[i - 1] * qpow(i, mod - 2, mod)%mod;
}

组合数递推公式 \(C_n^m=C_{n-1}^{m-1}+C_{n-1}^{m}\)

递推预处理组合数

void pre(){
	for(int i=1;i<=1000;++i){
		c[i][i]=c[i][0]=1;
		for(int j=1;j<i;++j){
			c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
		}
	}
	return ;
}

相关资料

例题


范德蒙德卷积 - 组合数公式的推导

范德蒙德卷积是一种合并组合数的式子,主要应用于组合数学的公式推导。
范德蒙德卷积公式:$\displaystyle \sum_{i = 0}^{k}{n \choose i}{m \choose k - i} = {n + m \choose k} $

oi wiki :在一个大小为 n+m 的集合中取出 k 个数,可以等于把大小为 n+m 的集合拆成两个集合,大小分别为 n 与 m,然后从 n 中取出 i 个数,从 m 中取出 k-i 个数的方案数。由于我们有了对于 i 的枚举,于是只需要考虑一种拆法,因为不同的拆法之间是等价的。

推论

  • 推论 1 :$\displaystyle \sum_{i = -r}^{s}{n \choose r + i}{m \choose s - i} = {n + m \choose r + s} $
  • 推论 2 :$\displaystyle \sum_{i = 1}^{n}{n \choose i}{n \choose i - 1} = {2n \choose n - 1} $
  • 推论 3 :$\displaystyle \sum_{i = 0}^{n}{n \choose i}^ 2 = \sum_{i = 0}^{n}{n \choose i}{n \choose n - i} = {2n \choose n} $
  • 推论 4 :$\displaystyle \sum_{i = 0}^{m}{n \choose i}{m \choose i} = {n + m \choose m} $

相关资料

oi wiki - 范德蒙德卷积


二项式定理

二项式定理:\((a + b)^n = \displaystyle \sum_{r = 0}^{n}{C_{n}^{r}{a^rb^{n - r}}}\)
二项式系数:$C_{n}^{r} = \frac{n!}{r!(n - r)!} $

例题

posted on 2023-07-11 16:14  Qiansui  阅读(21)  评论(0编辑  收藏  举报