文章目录
- 组合数奇偶判断
- 题意
- 思路
- 综上
组合数奇偶判断
【用杨辉三角阐释Lucas定理】https://www.bilibili.com/video/BV14F411P7ES?vd_source=67186f29c3efb728bcff34035cf5aba2
这个视频可以简单的领会一下精神,卢卡斯定理也就是用于组合数取模。
- 奇偶性通过对2取模来判断。
为什么提到“奇偶”“对2取摸”“杨辉三角”“卢卡斯定理”?
这就要引入一道题:
Problem - F - Codeforces榜单清一色的
cout<<(((n-1)&i)==i?k:0)<<’ ';实在捉摸不透,因而来解释一番
题意
求三角形第n行的数据。
三角形定义如下:
- 在i行有i个整数
- 第一行中的单个整数是 k k k 。(k的值无关紧要,只考虑01)
T i , j = { T i − 1 , j − 1 ⊕ T i − 1 , j , if 1 < j < i T i − 1 , j , if j = 1 T i − 1 , j − 1 , if j = i T_{i,j} = \begin{cases} T_{i-1,j-1} \oplus T_{i-1,j}, &\textrm{if } 1 < j < i \\ T_{i-1,j}, &\textrm{if } j = 1 \\ T_{i-1,j-1}, &\textrm{if } j = i \end{cases} Ti,j=⎩ ⎨ ⎧Ti−1,j−1⊕Ti−1,j,Ti−1,j,Ti−1,j−1,if 1<j<iif j=1if j=i
思路
- 异或某种意义上来讲,是不进位的二进制加法。
根据三角形定义,易知:此三角形正是杨辉三角对2取模
-
由于杨辉三角和二项式、组合数的关系。只需求 C n − 1 i C_{n-1}^{i} Cn−1i%2, 0为0,1为k
-
卢卡斯定理用于p(质数)较小的组合数取模
根据Lucas定理,对于质数p(在这里p=2),组合数C(n, k)模p可以表示为一下两种形式(本文主要围绕第二种):
C n m = C n p m p ⋅ C n % p m % p % p C_{n}^{m}=C_\frac{n}{p}^\frac{m}{p}\cdot C_{{n\%p}}^{m\%p} \%p Cnm=Cpnpm⋅Cn%pm%p%p
C ( n , m ) ≡ ∏ i = 0 r C ( n i , m i ) ( m o d p ) C(n, m) \equiv \prod_{i=0}^{r} C(n_i, m_i) \pmod{p} C(n,m)≡i=0∏rC(ni,mi)(modp)
其中,n和m分别表示为p进制数(在这里是二进制),即 n = ∑ i = 0 r n i ⋅ 2 i 和 m = ∑ i = 0 r m i ⋅ 2 i n = \sum_{i=0}^{r} n_i \cdot 2^i 和 m = \sum_{i=0}^{r} m_i \cdot 2^i n=i=0∑rni⋅2i和m=i=0∑rmi⋅2i。
总结: C ( n , m ) ( m o d 2 ) C(n, m)\pmod{2} C(n,m)(mod2)等于n的二进制表示中每个位上的数字与k的二进制表示中对应位上的数字进行“与”操作的结果的乘积。
- 由于我们考虑的是模2的情况,组合数 C ( n i , m i ) C(n_i, m_i) C(ni,mi)模2只有两种结果:0或1。而 C ( n i , m i ) C(n_i, m_i) C(ni,mi)模2为1当且仅当 n i > = m i n_i >= m_i ni>=mi。
即, C 0 0 和 C 1 1 和 C 1 0 C_{0}^{0}和C_{1}^{1}和C_{1}^{0} C00和C11和C10=1, C 0 1 C_{0}^{1} C01为0
- 因此,C(n, m)模2为1当且仅当n和k的二进制表示中对应的每一位都满足 n i > = m i n_i >= m_i ni>=mi,这等价于 n i 和 m i n_i和m_i ni和mi的“与”操作结果为1
综上
(n-1)&i==i 表示组合数
C
n
−
i
i
C_{n-i}^{i}
Cn−ii为奇数,反之,为偶数
若想了解公式一求解组合数,请转:
求组合数(递推法、乘法逆元、卢卡斯定理、分解质因数)_分解质因数求组合数-CSDN博客