杨辉三角与二项式定理

浅浅的花香味﹌ 2021-12-03 04:41 348阅读 0赞

杨辉三角的数字和二项式展开的系数有对应关系,如下图:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poaXllZWdhbw_size_16_color_FFFFFF_t_70

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

通过二项式定理:\\left ( a+b \\right )^\{n\}=\\sum\_\{k=0\}^\{n\}C\_\{n\}^\{k\}a^\{n-k\}b^\{k\},我们可以用杨辉三角形的性质来求组合数。时间复杂度O(n^2)

  1. int n;
  2. ll c[maxn][maxn];
  3. void init(){
  4. for(int i = 0;i <= n;i++){
  5. c[i][0] = 1;
  6. for(int j = 1;j <= i;j++){
  7. c[i][j] = (c[i-1][j-1]+c[i-1][j])%mod;
  8. }
  9. }
  10. }

还有一个O(n)的算法,运用性质:C\_\{n\}^\{k\}=\\frac\{n-k+1\}\{k\}C\_\{n\}^\{k-1\},可以算出指定n的C\_\{n\}^\{k\}

  1. int n;
  2. ll c[maxn];
  3. void init(){
  4. c[0] = 1;
  5. for(int i = 1;i <= n;i++){
  6. c[i] = c[i-1]*(n-i+1)/i;
  7. }
  8. }

推荐一个例题:牛客Wannafly挑战赛18 - A题

AC代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int maxn = 1e3+10;
  4. const int mod = 1e9+7;
  5. typedef long long ll;
  6. int n;
  7. ll c[maxn][maxn];
  8. void init(){
  9. for(int i = 0;i <= n;i++){
  10. c[i][0] = 1;
  11. for(int j = 1;j <= i;j++){
  12. c[i][j] = (c[i-1][j-1]+c[i-1][j])%mod;
  13. }
  14. }
  15. }
  16. int main()
  17. {
  18. scanf("%d",&n);
  19. init();
  20. /*for(int i = 0;i <= n-1;i++){
  21. cout<<c[i]<<" ";
  22. }*/
  23. ll ans = 0;
  24. for(int i = 0;2*i <= (n-1);i=i+2){
  25. ans = (ans + c[n-1][i]*c[n-1-i][i]%mod)%mod;
  26. }
  27. printf("%lld\n",ans);
  28. return 0;
  29. }

发表评论

表情:
评论列表 (有 0 条评论,348人围观)

还没有评论,来说两句吧...

相关阅读

    相关 三角

    一、什么是杨辉三角 > 杨辉三角:是二项式系数在三角形中的一种几何排列。 > 杨辉三角的每个数等于它上方两数之和。 > ![在这里插入图片描述][20201206