P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪 题解

题目分析

本题要求解一系列同余式的最小非负整数解,形式如下:

\[x ≡ \tt r_1 (mod $\tt m_1$)

x ≡ \tt r_2 (mod $\tt m_2$)

...

x ≡ \tt r_n (mod $\tt m_n$)
\]

其中每个方程表示"猪的数量为x时,用mᵢ个猪圈分猪后剩余\(\tt r_i\)头"。

解题思路

采用逐步合并同余式的策略:

  1. 从第一个同余式开始,得到初始解
  2. 逐个合并后续同余式,每次合并都保留两个同余式的公共解
  3. 最终得到满足所有条件的最小解

完整代码实现

代码解析

  1. 核心函数 merge

    • 功能:求解同时满足两个同余式的最小解
    • 参数:a(第一个解), m(第一个模数), b(第二个余数), n(第二个模数)
    • 逻辑:从a开始,每次加m(保证始终满足第一个同余式),直到找到满足第二个同余式的解
  2. 主函数流程

    • 读取同余式数量n
    • 初始化第一个同余式的解和模数
    • 循环合并每个新同余式:
      • 调用merge函数获取新的公共解
      • 更新模数为当前模数与新模数的最小公倍数(LCM)
    • 输出最终解
  3. 关键优化

    • 使用最小公倍数作为新模数,减少后续枚举次数
    • 使用long long类型避免大数值计算溢出
    • 加入防无限循环判断(虽然题目保证有解)

时间复杂度分析

  • 每次合并操作的枚举次数最多为两个模数的最大公约数
  • 整体时间复杂度为O(n·gcd(m₁,m₂)),其中n为同余式数量,m为模数最大值
  • 对于本题约束(n≤10,m≤1000),效率完全足够

示例演示

以输入:

3
3 2
5 3
7 2

为例:

  1. 初始解:ans=2(满足x≡2 mod 3)
  2. 合并x≡3 mod 5:从2开始加3,得到23(23 mod 5=3)
  3. 合并x≡2 mod 7:从23开始加15(LCM(3,5)),得到128(128 mod 7=2)
  4. 输出128

还有一道题能水:11C52AF48C7F90A25E17E71D2AD41457(MD5加密)

P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪的更多相关文章

  1. 中国剩余定理(CRT)及其扩展(EXCRT)详解

    问题背景   孙子定理是中国古代求解一次同余式方程组的方法.是数论中一个重要定理.又称中国余数定理.一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作<孙子算经>卷下第 ...

  2. 中国剩余定理(CRT) & 扩展中国剩余定理(ExCRT)总结

    中国剩余定理(CRT) & 扩展中国剩余定理(ExCRT)总结 标签:数学方法--数论 阅读体验:https://zybuluo.com/Junlier/note/1300035 前置浅讲 前 ...

  3. 中国剩余定理 CRT

    中国剩余定理 CRT 正常版本CRT 要解的是一个很容易的东西 \[ \begin{aligned} x\equiv a_1(mod\ m_1)\\ x\equiv a_2(mod\ m_2)\\ . ...

  4. 算法学习笔记(9): 中国剩余定理(CRT)以及其扩展(EXCRT)

    扩展中国剩余定理 讲解扩展之前,我们先叙述一下普通的中国剩余定理 中国剩余定理 中国剩余定理通过一种非常精巧的构造求出了一个可行解 但是毕竟是构造,所以相对较复杂 \[\begin{cases} x ...

  5. 模板-->中国剩余定理[互质版本]

    如果有相应的OJ题目,欢迎同学们提供相应的链接 相关链接 所有模板的快速链接 扩展欧几里得extend_gcd模板 poj_1006_Biorhythms,my_ac_code 简单的测试 None ...

  6. 扩展GCD 中国剩余定理(CRT) 乘法逆元模版

    extend_gcd: 已知 a,b (a>=0,b>=0) 求一组解 (x,y) 使得 (x,y)满足 gcd(a,b) = ax+by 以下代码中d = gcd(a,b).顺便求出gc ...

  7. 模板—中国剩余定理+拓展GCD

    int exgcd(int a,int b,int &x,int &y) { ) { x=,y=; return a; } int gcd=exgcd(b,a%b,x,y); int ...

  8. 学习笔记:中国剩余定理(CRT)

    引入 常想起在空间里见过的一些智力题,这个题你见过吗: 一堆苹果,\(3\)个\(3\)个地取剩\(1\)个,\(5\)个\(5\)个地取剩\(1\)个,\(7\)个\(7\)个地取剩\(2\)个,苹 ...

  9. 中国剩余定理(CRT)及其拓展(ExCRT)

    中国剩余定理 CRT 推导 给定\(n\)个同余方程 \[ \left\{ \begin{aligned} x &\equiv a_1 \pmod{m_1} \\ x &\equiv ...

  10. [洛谷P1495] 曹冲养猪 (中国剩余定理模板)

    中国剩余定理(朴素的)用来解线性同余方程组: x≡a[1] (mod m[1]) x≡a[2] (mod m[2]) ...... x≡a[n] (mod m[n]) 定义ms=m[1]*m[2]*. ...

随机推荐

  1. 谷歌浏览器 与 C# 4种嵌入浏览器 从 兼容性、性能、高级特性 方面的表现比对

    ​ CS架构 Web具有非常强大且友好的开发生态,在CS架构的窗口程序中嵌入浏览器,有哪些好处呢? 1,能够极大丰富程序的表现形式 2,能够充分地利用web的跨平台特性 3,能够使用web更现代更丰富 ...

  2. 商品中心—10.商品B端搜索系统的说明文档

    大纲 1.商品B端搜索系统的运行流程 + 缓存和索引设计 2.商品B端搜索系统监听数据变更与写入ES索引 3.商品B端搜索系统的历史搜索词的实现 4.商品B端搜索系统的搜索词补全的实现 5.商品B端搜 ...

  3. 微软开源 Azure Functions MCP Extension

    Azure Functions MCP Extension 是微软推出的开源扩展库,旨在将 Azure Functions 与模型上下文协议(Model Context Protocol, MCP) ...

  4. mitmproxy 的使用

    from mitmproxy import http # 指定需要拦截的 URL 关键字(可以是完整 URL,也可以是匹配规则) TARGET_URL = "https://www.baid ...

  5. Blazor学习之旅(11)简易SignalR聊天室

    大家好,我是Edison. 很久没有更新Blazor这个系列了,在上一篇我们学习了如何实现多语言和本地化,这一篇我们了解下Blazor+SignalR结合. 什么是SignalR? ASP.NET C ...

  6. AWTK项目编译问题整理(1)

    三方库组织 公司的项目初步三方库路径组织是这样,awtk-widget开头的是awtk的自定义控件,无源码的二进制库放在sourceless这个文件夹: ./3rd   ├── awtk-widget ...

  7. C# datagridView 表格渲染变色 ( 动态改变表格值) 绘制时改变表格值

    private void DGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)        {           ...

  8. droidrun-APP端UI自动化测试

    前言 在 APP 迭代频繁的当下,UI 自动化测试用例维护一直是效率瓶颈.droidrun 框架通过自然语言驱动 + 视觉大模型的创新模式,实现了安卓 /iOS 双端自动化测试的智能化与低维护成本,为 ...

  9. Lambert 光照模型

    简介 lambert 光照模型可以说是最简单的光照模型了. 主要考虑了 漫反射. 漫反射也单单考虑了经验模型. 主要观察 面片渲染器(我是这么叫的) 参考链接 https://zhuanlan.zhi ...

  10. iga 入门之 确定单元基函数

    简介 摘自 流体力学数值方法 有限元方法基函数的基本特点 基函数的数目与全区域的结点数目相等,每个结点都对应一个基函数. 基函数的形状是"尖顶形"的,它所对应结点上的函数值为1,其 ...