当前位置: 首页 > 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博客

相关文章:

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

文章目录 组合数奇偶判断题意思路综上 组合数奇偶判断 【用杨辉三角阐释Lucas定理】https://www.bilibili.com/video/BV14F411P7ES?vd_source67186f29c3efb728bcff34035cf5aba2 这个视频可以简单的领会一下精神&#xff0c;卢卡斯定理也就是用于组合数取模。 奇偶性通过对2…...

ECharts组件封装教程:Vue3中的实践与探索

在日常的前端开发中,ECharts 作为一款强大且易用的图表库,被广泛应用于数据可视化场景。为了更好地在 Vue3 项目中复用 ECharts 功能,我们可以将其封装成一个组件。本文将带大家一步步实现 ECharts 的 Vue3 组件封装,并演示如何在父组件中调用和使用。 一、封装 ECharts 组…...

LLM中的Benchmark是什么

LLM中的Benchmark是什么 “DeepSeek推动价值重估Benchmark” DeepSeek这家公司或其相关技术的发展,促使Benchmark这家机构对相关资产或企业的价值进行重新评估。“Benchmark”在这里是一家研究机构或金融分析机构。 “Benchmark”常见的意思是“基准;水准点,基准点”,作…...

【新加坡】软件工程师工签政策、求职指南

文章目录 关键要点就业准证要求求职平台注意事项详细报告就业准证&#xff08;EP&#xff09;要求求职平台与投递渠道注意事项与求职建议表格&#xff1a;求职平台对比额外考虑关键引用 关键要点 去新加坡工作需要申请就业准证&#xff08;EP&#xff09;&#xff0c;通常要求…...

梯度下降法(Gradient Descent) -- 现代机器学习的血液

梯度下降法(Gradient Descent) – 现代机器学习的血液 梯度下降法是现代机器学习最核心的优化引擎。本文从数学原理、算法变种、应用场景到实践技巧&#xff0c;用三维可视化案例和代码实现揭示其内在逻辑&#xff0c;为你构建完整的认知体系。 优化算法 一、梯度下降法的定义…...

CMake宏定义管理:如何优雅处理第三方库的宏冲突

在C/C项目开发中&#xff0c;我们常常会遇到这样的困境&#xff1a; 当引入一个功能强大的第三方库时&#xff0c;却发现它定义的某个宏与我们的项目产生冲突。比如&#xff1a; 库定义了 BUFFER_SIZE 1024&#xff0c;而我们需要 BUFFER_SIZE 2048库内部使用 DEBUG 宏控制日志…...

【计算机网络】常见tcp/udp对应的应用层协议,端口

TCP 和 UDP 对应的常见应用层协议 &#x1f4cc; 基于 TCP 的应用层协议 协议全称用途默认端口HTTPHyperText Transfer Protocol超文本传输协议80HTTPSHTTP Secure加密的超文本传输协议443FTPFile Transfer Protocol文件传输协议&#xff08;20 传输数据&#xff0c;21 控制连…...

微服务学习(2):实现SpringAMQP对RabbitMQ的消息收发

目录 SpringAMQP是什么 为什么采用SpringAMQP SpringAMQP应用 准备springBoot工程 实现消息发送 SpringAMQP是什么 Spring AMQP是Spring框架下用于简化AMQP&#xff08;高级消息队列协议&#xff09;应用开发的一套工具集&#xff0c;主要针对RabbitMQ等消息中间件的集成…...

《操作系统 - 清华大学》 9 -2:进程调度:调度原则

进程调度策略&#xff1a;原则、指标与权衡 在计算机系统中&#xff0c;进程调度策略至关重要。我们讲的就是有不同的这种调度策略&#xff0c;那么调度的原则是什么呢&#xff1f;原则就是选择某一个进程执行的依据&#xff0c;即要基于什么样的标准来挑选最合适的进程去执行…...

CSS—选择器详解:5分钟动手掌握选择器

个人博客&#xff1a;haichenyi.com。感谢关注 1. 目录 1–目录2–引言3–种类4–优先级 引言 什么是选择器&#xff1f; CSS选择器是CSS&#xff08;层叠样式表&#xff09;中的一种规则&#xff0c;用于指定要应用样式的HTML元素。它们就像是指向网页中特定元素的指针&#…...

Java——String

在 Java 中&#xff0c;String 类是用于表示不可变字符序列的核心类&#xff0c;提供了丰富的 API 用于操作字符串。以下是 String 类的关键特性和常用方法详解&#xff1a; 一、String 的核心特性 不可变性&#xff08;Immutable&#xff09; 一旦创建&#xff0c;字符串内容不…...

Channel State Information 信道状态信息

Channel State Information&#xff08;CSI&#xff0c;信道状态信息&#xff09;是无线通信系统中的一个重要概念&#xff0c;指的是接收端或发送端对无线信道特性的估计和反馈。CSI可以用于优化无线通信性能&#xff0c;例如信道均衡、预编码、波束成形等&#xff0c;以提高数…...

python中单例模式应用

数据库连接池单例模式 1. 为什么使用单例模式 创建数据库连接是一个昂贵的过程&#xff08;涉及网络通信、认证等&#xff09;。单例模式的连接池可以在程序启动时初始化一组连接&#xff0c;并在整个生命周期中重用这些连接&#xff0c;而不是每次请求都新建连接。同时还可…...

StarRocks 在爱奇艺大数据场景的实践

作者&#xff1a;林豪&#xff0c;爱奇艺大数据 OLAP 服务负责人 小编导读&#xff1a; 本文整理自爱奇艺工程师在 StarRocks 年度峰会的分享&#xff0c;介绍了爱奇艺 OLAP 引擎演化及引入 StarRocks 后的效果。 在广告业务中&#xff0c;StarRocks 替换 ImpalaKudu 后&#x…...

Easy Trans Spring Boot Starter ---Spring系列的字段翻译库

Easy Trans Spring Boot Starter 使用文档 1. 简介 easy-trans-spring-boot-starter 是一个基于 Spring Boot 的库&#xff0c;用于简化数据翻译和转换操作。它可以帮助你将数据库中的枚举值、状态码等转换为用户友好的文本&#xff0c;或者将一种数据格式转换为另一种格式。…...

JAVA入门——IO流

一、了解File类 这个类里面提供了一些文件相关的方法&#xff0c;了解即可&#xff0c;方法有很多&#xff0c;不好背下面这个是最常用的只能对文件本身操作&#xff0c;不能读取数据 public File[] listFiles();//获取当前路径下的所有内容 注意&#xff1a;如果是需要权限才…...

Spring Boot 流式响应豆包大模型对话能力

当Spring Boot遇见豆包大模型&#xff1a;一场流式响应的"魔法吟唱"仪式 一、前言&#xff1a;关于流式响应的奇妙比喻 想象一下你正在火锅店点单&#xff0c;如果服务员必须等所有菜品都备齐才一次性端上来&#xff0c;你可能会饿得把菜单都啃了。而流式响应就像贴…...

Android Binder 用法详解

Binder 是 Android 系统中的一种进程间通信&#xff08;IPC&#xff09;机制&#xff0c;它允许不同进程之间进行高效通信。Binder 在 Android 系统中被广泛使用&#xff0c;例如在 Activity 与 Service 的交互中。 Binder 的基本组成 实现 Binder 通信通常包含以下几个关键部…...

在Ubuntu中,某个文件的右下角有一把锁的标志是什么意思?

在Ubuntu中&#xff0c;某个文件的右下角有一把锁的标志是什么意思&#xff1f; 在 Ubuntu&#xff08;或其他基于 GNOME 文件管理器的 Linux 发行版&#xff09;中&#xff0c;文件或文件夹的右下角出现一把“锁”标志&#xff0c;通常表示 你当前的用户没有该文件/文件夹的写…...

达梦数据库如何收集表和索引的统计信息

命令&#xff1a; DBMS_STATS.GATHER_TABLE_STATS(OWNNAME >HIDC,TABNAME > SYS_OSS,ESTIMATE_PERCENT>100,METHOD_OPT > FOR ALL COLUMNS SIZE AUTO,DEGREE > 2,CASCADE > true); dbms_stats.gather_table_stats&#xff1a;用于收集目标表&#xff0c;目…...

大语言模型:从诞生到未来的探索

1 发展历程 1.1 早期探索&#xff1a;基础积累 大语言模型的发展并非一蹴而就&#xff0c;其源头可以追溯到自然语言处理的早期阶段。早期的自然语言处理系统主要基于规则和模板&#xff0c;通过人工编写的语法规则来处理文本。例如&#xff0c;早期的机器翻译系统就是根据预…...

DeepSeek-V3:AI语言模型的高效训练与推理之路

参考&#xff1a;【论文学习】DeepSeek-V3 全文翻译 在人工智能领域&#xff0c;语言模型的发展日新月异。从早期的简单模型到如今拥有数千亿参数的巨无霸模型&#xff0c;技术的进步令人瞩目。然而&#xff0c;随着模型规模的不断扩大&#xff0c;训练成本和推理效率成为了摆在…...

【多模态】Magma多模态AI Agent

1. 前言 微软杨建伟团队&#xff0c;最近在AI Agent方面动作连连&#xff0c;前两天开源了OmniParser V2&#xff0c;2月26日又开源了Magma&#xff0c;OmniParser专注在对GUI的识别解析&#xff0c;而Magma则是基于多模态技术&#xff0c;能够同时应对GUI和物理世界的交互&…...

DeepSeek掘金——DeepSeek R1驱动的PDF机器人

DeepSeek掘金——DeepSeek R1驱动的PDF机器人 本指南将引导你使用DeepSeek R1 + RAG构建一个功能性的PDF聊天机器人。逐步学习如何增强AI检索能力,并创建一个能够高效处理和响应文档查询的智能聊天机器人。 本指南将引导你使用DeepSeek R1 + RAG构建一个功能性的PDF聊天机器人…...

DeepSeek在PiscTrace上完成个性化处理需求案例——光流法将烟雾动态可视化

引言&#xff1a;PiscTrace作为开放式的视图分析平台提供了固定格式的类型参数支持个性化定制处理需求&#xff0c;本文一步步的实现光流分析按照不同需求根据DeepSeek的代码处理视频生成数据。 光流法&#xff08;Optical Flow&#xff09;是一种基于图像序列的计算机视觉技术…...

explore与explode词源故事

英语单词explore来自古法语&#xff0c;源自拉丁语&#xff0c;由前缀ex-&#xff08;出来&#xff09;加词根plor-&#xff08;叫喊&#xff09;以及末尾的小尾巴-e组成&#xff0c;字面意思就是“喊出来&#xff0c;通过叫喊声赶出来”。它为什么能表示“探索”呢&#xff1f…...

LeeCode题库第三十七题

37.解数独 项目场景&#xff1a; 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请…...

【数字信号处理:从原理到应用的深度剖析】

一、数字信号处理的原理 数字信号处理&#xff08;DSP&#xff09;是一种通过数学算法对信号进行分析、处理和转换的技术。其核心在于对离散时间信号的操作&#xff0c;目的是提取有用信息或将信号转换为更易于解释的形式。 &#xff08;一&#xff09;信号的数字化过程 1. …...

MySQL 数据库安全配置最佳实践

文章目录 MySQL 数据库安全配置最佳实践账户与权限管理账户最小化原则权限最小化配置密码策略强化 认证与访问控制禁用匿名账户启用安全认证 网络安全防护访问源限制禁用远程root访问启用SSL加密 日志审计与监控全量审计配置二进制日志管理 服务端安全加固关键参数配置文件权限…...

小红书自动评论

现在越来越多的人做起来小红书&#xff0c;为了保证自己的粉丝和数据好看&#xff0c;需要定期养号。 那么养号除了发视频外&#xff0c;还需要积极在社区互动&#xff0c;比如点赞、评论等等&#xff0c;为了节省时间&#xff0c;我做了一个自动化评论工具。 先看效果 那这个是…...