组合数与二项式定理
鸽巢原理
n+1 只鸽子飞进 n 个笼子,必定有一个笼子出现 2 只鸽子
将 n 个物体,划分为 k 组,那么至少存在一个分组,含有大于或等于
组合数
组合数表示:
组合数基本公式:
组合数递推公式:
求解组合数
- 线性求组合数
范围
记得主函数里调用 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; }
组合数递推公式
递推预处理组合数
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 ; }
相关资料
例题
- 求组合数 2023杭电多校第五场 - 7 12
范德蒙德卷积 - 组合数公式的推导
范德蒙德卷积是一种合并组合数的式子,主要应用于组合数学的公式推导。
范德蒙德卷积公式:
oi wiki :在一个大小为 n+m 的集合中取出 k 个数,可以等于把大小为 n+m 的集合拆成两个集合,大小分别为 n 与 m,然后从 n 中取出 i 个数,从 m 中取出 k-i 个数的方案数。由于我们有了对于 i 的枚举,于是只需要考虑一种拆法,因为不同的拆法之间是等价的。
推论
- 推论 1 :
- 推论 2 :
- 推论 3 :
- 推论 4 :
相关资料
二项式定理
二项式定理:
二项式系数:
例题
- 计算二项式系数 洛谷 P1313 [NOIP2011 提高组] 计算系数
代码传送门
本文来自博客园,作者:Qiansui,转载请注明原文链接:https://www.cnblogs.com/Qiansui/p/17545067.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-07-11 C++运算符优先级