「学习笔记」二项式定理

更熟悉的阅读体验?

这是我之前写在 luogu 博客上的,只是现在才搬过来而已。QWQ

二项式系数

就是像 (nm) 这样的东西。

对于非负整数 n,k,规定 (n0)=1(nn)=1k>n(nk)=01knn 为正整数,则 (nk)=n!k!(nk)!

我们知道 (nm)=n!m!(nm)!,那么显然可以得出 (nm)=n(n1)...(nm+1)m!,还有 (nm)=(nnm)

二项式定理

对于一个非负整数 n(x+y)n=xn+(n1)xn1y+(n2)xn2y2+...+(nn1)xyn1+yn,用求和符号表示就是 (x+y)n=k=0n(nk)xnkyk

在初一我们一定学过 (x+y)2=x2+2xy+y2,这其实就是二项式定理的一个特殊形式。

假设 y=1,则可得 (x+1)n=k=0n(nk)xk

这个东西在证明卢卡斯定理时会用到。

杨辉三角(帕斯卡三角形)

杨辉三角就是像下面这样的东西:

0 1 2 3 4 5 6 --------------------- 0 |1 1 |1 1 2 |1 2 1 3 |1 3 3 1 4 |1 4 6 4 1 5 |1 5 10 10 5 1 6 |1 6 15 20 15 6 1 ...... (边框上的是坐标)

我们规定只有一个 1 的是第 0 行,1 1 是第 1 行,1 2 1 是第 2 行,以此类推。(但是我看百度百科上说 1 是第 1 行,在这里就当第 0 行算QWQ)

杨辉三角每行端点与结尾的数为1,其余的数等于它上方两数之和。

为啥扯二项式却扯到杨辉三角了?

有一道提高组真题 P2822 [NOIP2016 提高组] 组合数问题,它需要用前缀和求解,由于我的代码是远古时期写的,我就直接粘上代码。

#include<bits/stdc++.h> #define XD 114514 using namespace std; int t,k,a[2010][2010],b[2010][2010]; int c[10010][10],num; int main(){ cin>>t>>k; for(int i=1;i<=t;i++){ scanf("%d%d",&c[i][1],&c[i][2]); num=max(num,c[i][1]); } for(int i=1;i<=num+2;i++){ for(int j=1;j<=i;j++){ if(j==1 or j==i) a[i][j]=1; else{ a[i][j]=a[i-1][j]+a[i-1][j-1]; if(a[i][j]>=k) a[i][j]-=k; } } } for(int i=3;i<=num+2;i++){ for(int j=2;j<i;j++){ if(a[i][j]==0 and j!=i+1) b[i-2][j-1]++; b[i-2][j-1]+=b[i-3][j-1]+b[i-2][j-2]-b[i-3][j-2]; } b[i-2][i-1]=b[i-2][i-2]; } for(int i=1;i<=t;i++){ printf("%d\n",b[c[i][1]-1][min(c[i][1]-1,c[i][2])]); } return 0; }

其实当时通过打表发现二项式系数构成的数字三角形和杨辉三角形完全一样,于是就愉快的求一遍前缀和就 AC 了。

那么根据杨辉三角的性质可得到(nk)=(n1k)+(n1k1),这就是帕斯卡公式。

其实就是设杨辉三角形中第 i 行第 j 列第数为 Yij,那么 (ij)=Yij。(补于 2023.5.18)


这里我会写一些二项式系数其他的式子。

  1. k(nk)=n(n1k1)

证明:

k(nk)=k×n(n1)...(nk+1)k!=n(n1)...(nk+1)(k1)!=n×(n1)(n2)...(nk+1)(k1)!=n(n1k1)

  1. k=0n(nk)=2n

证明:这个用排列组合证明自认为更简单。设 S 为一个有 n 个互不相同元素的集合,在集合中选出若干个元素放入集合 T 中,则 T 集合有 2n 种不同的情况,因为每个元素有放入 T 集合和不放入 T 集合两种选择,所以有 2n 种。也可以说是把 S 的元素放入 T 中,计算没有元素的情况数、只有 1 个元素的情况数、 T 中有 2 个元素的情况数...T 种有 n 个元素的情况数求和,也就是 k=0n(nk),于是就证出来了。QWQ

3.(n0)(n1)+(n2)(n3)+...+(1)n(nn)=0(n1)

证明:把这个柿子转换一下就变成了 (n0)+(n2)+...=(n1)+(n3)+...=2n1,由上面的第 2 的柿子可得,k=0n1(n1k)=2n1,我们来看杨辉三角的图,根据帕斯卡公式,(n0)+(n2)+...=(n1)+(n3)+...=2n1 就变成了 (n10)+(n11)+(n13)+...=(n10)+(n11)+(n13)+...=2n1,然后就没有然后了。QWQ

  1. 1(n1)+2(n2)+..+n(nn)=n2n1

证明:

1(n1)+2(n2)+..+n(nn)=n(n10)+n(n11)+...+n(n1n1)=n((n10)+(n11)+...+(n1n1))=n2n1

  1. k=0n(nk)2=(2nn)(n0)

证明:设 S 是一个有 2n 个互不相同元素的集合,在集合 S 中选出 n 个元素,则有 (2nn) 种方案,也可以把 S 分为 AB 两个子集,每个子集中都有 n 个元素,假设在 A 中选 k 该数,则在 B 中选 (nk) 个数,则有 k=0n(nk)(nnk)=k=0n(nk)2 种方案数,于是,k=0n(nk)2=(2nn)(n0)

上面的第 5 个其实是范德蒙卷积公式中的一种特殊情况。

范德蒙卷积公式:对所有的正整数 m1,m2,n,有 k=0n(m1k)(m2nk)=(m1+m2n)

多项式系数

没想到吧,有了二项式系数还有多项式系数。

(nn1 n2...nt)=n!n1!n2!...nt!

其中 n=i=1tnt

多项式定理

(x1+x2+...+xt)n=(nn1 n2...nt)x1n1x2n2...xtnt

其中求和的条件是满足 n1+n2+...+nt=n 的非负整数解。

牛顿二项式定理

这个只把柿子写上,听说要用到微积分的知识。

α 是实数。对于所有满足 0|x|<|y|xy,有 (x+y)α=k=0(αk)xkyαk,其中 (αk)=α(α1)...(αk+1)k!


参考的网络文献

杨辉三角百度百科

二项式定理百度百科

acm数学(番外1) 范德蒙德卷积公式

【组合数学】多项式定理 ( 多项式定理 | 多项式定理证明 | 多项式定理推论 1 项数是非负整数解个数 | 多项式定理推论 2 每项系数之和 )

还有一本书。


这时有人可能就要问了:“你巴拉巴拉写了这么多,那这些到底有啥用呢?”

我可以负责地对你说,这对 OI 没有任何卵用。(滑稽


__EOF__

本文作者wdgm4
本文链接https://www.cnblogs.com/wdgm4/p/17750927.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   wdgm4  阅读(123)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示