当前位置: 首页 > article >正文

卢卡斯定理判断组合数奇偶(Codeforces Round 1006 (Div. 3)——F)

文章目录

    • 组合数奇偶判断
      • 题意
      • 思路
      • 综上

组合数奇偶判断

【用杨辉三角阐释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= Ti1,j1Ti1,j,Ti1,j,Ti1,j1,if 1<j<iif j=1if j=i

思路

  1. 异或某种意义上来讲,是不进位的二进制加法

​ 根据三角形定义,易知:此三角形正是杨辉三角对2取模

  1. 由于杨辉三角和二项式、组合数的关系。只需求 C n − 1 i C_{n-1}^{i} Cn1i%2, 0为0,1为k

  2. 卢卡斯定理用于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=CpnpmCn%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=0rC(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=0rni2im=i=0rmi2i

总结: 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} C00C11C10=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 nimi的“与”操作结果为1

综上

(n-1)&i==i 表示组合数 C n − i i C_{n-i}^{i} Cnii为奇数,反之,为偶数
若想了解公式一求解组合数,请转:
求组合数(递推法、乘法逆元、卢卡斯定理、分解质因数)_分解质因数求组合数-CSDN博客


http://www.kler.cn/a/567295.html

相关文章:

  • 买二赠一--蓝桥
  • 版图自动化连接算法开发 00003 ------ 添加两个中间点实现 Manhattan 方式连接两个给定的坐标点
  • 升级Office软件后,Windows 系统右键里没有新建Word、Excel、PowerPoint文件的解决办法
  • 网络原理--TCP/IP(2)
  • SERPENTINE Tools
  • OAK相机的抗震性测试
  • redis repl_backlog_first_byte_offset 这个字段的作用
  • Linux网络 TCP全连接队列与tcpdump抓包
  • 【SWAT模型应用】AI辅助下基于ArcGIS Pro的SWAT模型全流程高效建模实践与深度进阶应用
  • 51单片机编程学习笔记——管脚输出
  • 高频面试题(含笔试高频算法整理)基本总结回顾16
  • 性能调优篇——索引优化与执行计划解析
  • Vue3响应式原理解析
  • docker使用代理的简单配置
  • 在 Vim 中查找一个单词的命令
  • JAVA面试_进阶部分_23种设计模式总结
  • Vue.js 组件开发全面详解及应用案例
  • 云创智城YunCharge 新能源二轮、四轮充电解决方案(云快充、万马爱充、中电联、OCPP1.6J等多个私有单车、汽车充电协议)之充电占位解决方案
  • 【时序预测】在线学习:算法选择(从线性模型到深度学习解析)
  • 2015 - 2024年国外与中国博士招生毕业人数趋势现状分析2025.2.26