P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪
P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪 题解
题目分析
本题要求解一系列同余式的最小非负整数解,形式如下:
x ≡ \tt r_2 (mod $\tt m_2$)
...
x ≡ \tt r_n (mod $\tt m_n$)
\]
其中每个方程表示"猪的数量为x时,用mᵢ个猪圈分猪后剩余\(\tt r_i\)头"。
解题思路
采用逐步合并同余式的策略:
- 从第一个同余式开始,得到初始解
- 逐个合并后续同余式,每次合并都保留两个同余式的公共解
- 最终得到满足所有条件的最小解
完整代码实现
代码解析
核心函数 merge:
- 功能:求解同时满足两个同余式的最小解
- 参数:a(第一个解), m(第一个模数), b(第二个余数), n(第二个模数)
- 逻辑:从a开始,每次加m(保证始终满足第一个同余式),直到找到满足第二个同余式的解
主函数流程:
- 读取同余式数量n
- 初始化第一个同余式的解和模数
- 循环合并每个新同余式:
- 调用merge函数获取新的公共解
- 更新模数为当前模数与新模数的最小公倍数(LCM)
- 输出最终解
关键优化:
- 使用最小公倍数作为新模数,减少后续枚举次数
- 使用long long类型避免大数值计算溢出
- 加入防无限循环判断(虽然题目保证有解)
时间复杂度分析
- 每次合并操作的枚举次数最多为两个模数的最大公约数
- 整体时间复杂度为O(n·gcd(m₁,m₂)),其中n为同余式数量,m为模数最大值
- 对于本题约束(n≤10,m≤1000),效率完全足够
示例演示
以输入:
3
3 2
5 3
7 2
为例:
- 初始解:ans=2(满足x≡2 mod 3)
- 合并x≡3 mod 5:从2开始加3,得到23(23 mod 5=3)
- 合并x≡2 mod 7:从23开始加15(LCM(3,5)),得到128(128 mod 7=2)
- 输出128
还有一道题能水:11C52AF48C7F90A25E17E71D2AD41457(MD5加密)
P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪的更多相关文章
- 中国剩余定理(CRT)及其扩展(EXCRT)详解
问题背景 孙子定理是中国古代求解一次同余式方程组的方法.是数论中一个重要定理.又称中国余数定理.一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作<孙子算经>卷下第 ...
- 中国剩余定理(CRT) & 扩展中国剩余定理(ExCRT)总结
中国剩余定理(CRT) & 扩展中国剩余定理(ExCRT)总结 标签:数学方法--数论 阅读体验:https://zybuluo.com/Junlier/note/1300035 前置浅讲 前 ...
- 中国剩余定理 CRT
中国剩余定理 CRT 正常版本CRT 要解的是一个很容易的东西 \[ \begin{aligned} x\equiv a_1(mod\ m_1)\\ x\equiv a_2(mod\ m_2)\\ . ...
- 算法学习笔记(9): 中国剩余定理(CRT)以及其扩展(EXCRT)
扩展中国剩余定理 讲解扩展之前,我们先叙述一下普通的中国剩余定理 中国剩余定理 中国剩余定理通过一种非常精巧的构造求出了一个可行解 但是毕竟是构造,所以相对较复杂 \[\begin{cases} x ...
- 模板-->中国剩余定理[互质版本]
如果有相应的OJ题目,欢迎同学们提供相应的链接 相关链接 所有模板的快速链接 扩展欧几里得extend_gcd模板 poj_1006_Biorhythms,my_ac_code 简单的测试 None ...
- 扩展GCD 中国剩余定理(CRT) 乘法逆元模版
extend_gcd: 已知 a,b (a>=0,b>=0) 求一组解 (x,y) 使得 (x,y)满足 gcd(a,b) = ax+by 以下代码中d = gcd(a,b).顺便求出gc ...
- 模板—中国剩余定理+拓展GCD
int exgcd(int a,int b,int &x,int &y) { ) { x=,y=; return a; } int gcd=exgcd(b,a%b,x,y); int ...
- 学习笔记:中国剩余定理(CRT)
引入 常想起在空间里见过的一些智力题,这个题你见过吗: 一堆苹果,\(3\)个\(3\)个地取剩\(1\)个,\(5\)个\(5\)个地取剩\(1\)个,\(7\)个\(7\)个地取剩\(2\)个,苹 ...
- 中国剩余定理(CRT)及其拓展(ExCRT)
中国剩余定理 CRT 推导 给定\(n\)个同余方程 \[ \left\{ \begin{aligned} x &\equiv a_1 \pmod{m_1} \\ x &\equiv ...
- [洛谷P1495] 曹冲养猪 (中国剩余定理模板)
中国剩余定理(朴素的)用来解线性同余方程组: x≡a[1] (mod m[1]) x≡a[2] (mod m[2]) ...... x≡a[n] (mod m[n]) 定义ms=m[1]*m[2]*. ...
随机推荐
- 谷歌浏览器 与 C# 4种嵌入浏览器 从 兼容性、性能、高级特性 方面的表现比对
CS架构 Web具有非常强大且友好的开发生态,在CS架构的窗口程序中嵌入浏览器,有哪些好处呢? 1,能够极大丰富程序的表现形式 2,能够充分地利用web的跨平台特性 3,能够使用web更现代更丰富 ...
- 商品中心—10.商品B端搜索系统的说明文档
大纲 1.商品B端搜索系统的运行流程 + 缓存和索引设计 2.商品B端搜索系统监听数据变更与写入ES索引 3.商品B端搜索系统的历史搜索词的实现 4.商品B端搜索系统的搜索词补全的实现 5.商品B端搜 ...
- 微软开源 Azure Functions MCP Extension
Azure Functions MCP Extension 是微软推出的开源扩展库,旨在将 Azure Functions 与模型上下文协议(Model Context Protocol, MCP) ...
- mitmproxy 的使用
from mitmproxy import http # 指定需要拦截的 URL 关键字(可以是完整 URL,也可以是匹配规则) TARGET_URL = "https://www.baid ...
- Blazor学习之旅(11)简易SignalR聊天室
大家好,我是Edison. 很久没有更新Blazor这个系列了,在上一篇我们学习了如何实现多语言和本地化,这一篇我们了解下Blazor+SignalR结合. 什么是SignalR? ASP.NET C ...
- AWTK项目编译问题整理(1)
三方库组织 公司的项目初步三方库路径组织是这样,awtk-widget开头的是awtk的自定义控件,无源码的二进制库放在sourceless这个文件夹: ./3rd ├── awtk-widget ...
- C# datagridView 表格渲染变色 ( 动态改变表格值) 绘制时改变表格值
private void DGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { ...
- droidrun-APP端UI自动化测试
前言 在 APP 迭代频繁的当下,UI 自动化测试用例维护一直是效率瓶颈.droidrun 框架通过自然语言驱动 + 视觉大模型的创新模式,实现了安卓 /iOS 双端自动化测试的智能化与低维护成本,为 ...
- Lambert 光照模型
简介 lambert 光照模型可以说是最简单的光照模型了. 主要考虑了 漫反射. 漫反射也单单考虑了经验模型. 主要观察 面片渲染器(我是这么叫的) 参考链接 https://zhuanlan.zhi ...
- iga 入门之 确定单元基函数
简介 摘自 流体力学数值方法 有限元方法基函数的基本特点 基函数的数目与全区域的结点数目相等,每个结点都对应一个基函数. 基函数的形状是"尖顶形"的,它所对应结点上的函数值为1,其 ...