杨辉三角和二项式定理

版权声明:个人笔记,仅供复习 https://blog.csdn.net/weixin_42373330/article/details/82840092

唯一分解定理

  • 算术基本定理,又称为正整数的唯一分解定理,即:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式。(这个定理真的是有趣

描述:

组合数C_{n}^{m}\textrm{}在组合数学中占有重要地位。与组合数相关的最重要的两个东西是:杨辉三角和二项式定理。下面就是一个杨辉三角:

                      1

                 1        1

           1         2       1

     1        3          3       1

1        4         6         4       1

另一方面把(a+b)^{n}展开,将得到一个关于x的多项式:

(a+b)^{0}=1\\ (a+b)^{1}=a+b\\ (a+b)^{2}=a^{2}+2ab+b^{2}\\ (a+b)^{3}=a^{3}+3a^{2}b+3ab^{2}+b^{3}\\ (a+b)^{4}=a^{4}+4a^{3}b+6a^{2}b^{2}+4ab^{3}+b^{4}\\

系数正好和杨辉三角一致。一般地,我们有二项式定理:

(a+b)^{n}=\sum_{k=0}^{n}C_{n}^{k}\textrm {}\small a^{n-k}b^{k}

给定n,如何求出\small (a+b)^{n}\small (a+b)^{n}中所有项的系数呢?一个方法是递推,根据杨辉三角中不难发现的规律,可写成如下程序:

memset(C,0,sizeof(C));
for(int i=0;i<=n;i++)
{
    C[i][0]=1;
    for(int j=1;j<=n;j++) C[i][j]=C[i-1][j-1]+C[i-1][j];
}

但遗憾的是,这个算法的时间复杂度是\small O\left ( n^{2} \right )——尽管我们只用对的是杨辉三角的第n行的n+1个元素,却把全部n行的\small O\left ( n^{2} \right )个元素都计算了一遍。

另一种方法是利用等式\small C_{n}^{k}\textrm{}=(\frac{n-k+1}{k})\small C_{n}^{k-1}\textrm{},从\small C_{n}^{0}\textrm{}=1开始从左到右递推,像这样:

C[0]=1;
for(int i=1;i<=n;i++) C[i]=C[i-1]*(n-i+1)/i;

注意,应该先乘后除,因为C[i-1]/i可能不是整数。

\small C_{n}^{k}\textrm{}=(\frac{n-k+1}{k})\small C_{n}^{k-1}\textrm{}这个可由\small C_{n}^{k}\textrm{}=\frac{n!}{k!(n-k)!}证明它。

证明:

\small \because C_{n}^{k}\textrm{}=\frac{n!}{k!(n-k)!}\\ \therefore C_{n}^{k-1}\textrm{}=\frac{n!}{(k-1)!(n-(k-1))!}\\

\small \therefore C_{n}^{k}\textrm{}=\frac{n-k+1}{k}\small C_{n}^{k-1}\textrm{}


例题10-4 无关的元素

对于给定的n个元素a1,a2,···,an,依次求出相邻两数之和,将得到一个新的数列。重复上述操作,最后结果将变成一个数。问这个数除以m的余数与哪些数无关?例如n=3,m=2时,第一次求和得到a1+a2,a2+a3,再求和得到a1+2a2+a3,它除以2的余数和a2无关。\small 1\leq n\leq 10^{5}\small 2\leq m\leq 10^{9}

分析:显然最后的求和公式是a1,a2,···,an的线性组合。设\small {a_{i}}^{}的系数为f(i),则和式除以m的余数与\small {a_{i}}^{}无关当且仅当f(i)是\small {a_{i}}^{}的倍数。

不难得出\small {a_{i}}^{}的系数是\small C_{n-1}^{k-1}.这样问题就变成了:\small C_{n-1}^{0},C_{n-1}^{1},...\, C_{n-1}^{n-1}中有哪些是m的倍数。

只需要一次计算m的唯一分解式中各个素因子在\small C_{n-1}^{i-1}中的指数即可完成判断。这些指数仍然可以用\small C_{n}^{k}\textrm{}=(\frac{n-k+1}{k})\small C_{n}^{k-1}\textrm{}递推。

猜你喜欢

转载自blog.csdn.net/weixin_42373330/article/details/82840092