0
点赞
收藏
分享

微信扫一扫

蓝桥杯备赛(十一)— 组合数学

朱小落 2022-04-06 阅读 66

只剩三天了,只能弄些简单的知识。一想到300元我就心痛。

文章目录

排列数的计算

A n k = n ! ( n − k ) ! = n ( n − 1 ) ⋯ ( n − k + 1 ) A_n^k=\frac{n!}{(n-k)!} = n (n - 1)\cdots (n - k + 1) Ank=(nk)!n!=n(n1)(nk+1)

k = 3
n = 5
ans = 1
for i in range(n, n - k, -1):
    ans *= i
print(ans)

组合数的计算

C n k = n ! k ! ( n − k ) ! C_n^k = \frac{n!}{k!(n-k)!} Cnk=k!(nk)!n!

1. 直接计算

n = 50
k = 20
temp = 1
for i in range(1, n + 1):
    temp *= i
for i in range(1, k + 1):
    temp //= i
for i in range(1, n - k + 1):
    temp //= i
print(temp)

缺点:数太大,不好算

2. 递推计算

C n k = C n − 1 k − 1 + C n − 1 k C_n^k = C_{n-1}^{k-1}+C_{n-1}^k Cnk=Cn1k1+Cn1k

c = [[0] * 10 for _ in range(10)]
for i in range(1, 10):
    c[i][0] = 1
    c[i][i] = 1
for i in range(2, 10):
    for j in range(1, i):
        c[i][j] = c[i - 1][j - 1] + c[i - 1][j]
print(c[6][3]) # 20

时间复杂度: O ( n 2 ) O(n^2) O(n2)

二项式定理

( x + y ) n = ∑ k = 0 n C n k x n − k y k (x+y)^n = \sum\limits_{k=0}^n C_n^kx^{n-k}y^{k} (x+y)n=k=0nCnkxnkyk

  • 2 n = ∑ k = 0 n C n k 2^n = \sum\limits_{k=0}^nC_n^k 2n=k=0nCnk
  • 0 = ∑ k = 0 n ( − 1 ) k C n k 0 = \sum\limits_{k=0}^n(-1)^kC_n^k 0=k=0n(1)kCnk
  • 3 n = ∑ k = 0 n 2 k C n k 3^n = \sum\limits_{k=0}^n2^kC_n^k 3n=k=0n2kCnk
举报

相关推荐

0 条评论