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

洛谷 P1495:【模板】中国剩余定理(CRT)/ 曹冲养猪

【题目来源】
https://www.luogu.com.cn/problem/P1495
https://www.acwing.com/problem/content/225/

【题目描述】
自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪。可是曹冲满不高兴,于是在工作中马马虎虎。有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把。举个例子,假如有 16 头母猪,如果建了 3 个猪圈,剩下 1 头猪就没有地方安家了。如果建造了 5 个猪圈,但是仍然有 1 头猪没有地方去,然后如果建造了 7 个猪圈,还有 2 头没有地方去。你作为曹操的私人秘书理所当然要将准确的猪数报给曹操,你该怎么办?

【输入格式】
第一行包含一个整数n:建立猪圈的次数。
接下来n行,每行两个整数ai、bi,表示建立了ai个猪圈,有bi头猪没有去处。你可以假定a1~an互质。

【输出格式】
输出包含一个正整数,即为曹冲
至少养母猪的数目。

【输入样例】
3
3 1
5 1
7 2

【输出样例】
16

【说明/提示】
1≤n≤
10
0≤bi<ai≤
100000
1≤∏ai≤
10^18

【算法分析】
● 中国剩余定理应用的充要条件是
模数互质(在本题中也就是猪圈数目互质)。

● 中国剩余定理算法步骤
(1)计算模数的乘积:M=m1·m2·…·mk
(2)对每个模数 mi,计算 Mi=M/mi
(3)对每个 Mi,求解 Mi 在模 mi 下的逆元 yi,即满足 Mi·yi≡1(mod mi)
(4)最终解 x 为:x=∑ai·Mi·yi(mod M),i∈(1,k)
其中,ai 是每个同余方程的余数。

● 中国剩余定理应用示例
例题:给定同余方程组: x≡2(mod 3),x≡3(mod 5),x≡2(mod 7) 由于模数 3、5、7 互质,所以可以采用中国剩余定理求解。步骤如下:
(1)计算 M=3×5×7=105。
(2)计算每个 Mi:M1=105/3=35,M2=105/5=21,M3=105/7=15。
(3)计算每个逆元 yi: 对于 M1=35,求解 35·y1≡1(mod 3),得到 y1=2。 对于 M2=21,求解 21·y2≡1(mod 5),得到 y2=1。 对于 M3=15,求解 15·y3≡1(mod 7),得到 y3=1。
(4)求解 x: x=(2×35×2+3×21×1+2×15×1) mod 105 =233 mod 105=23。

【算法代码】

#include <bits/stdc++.h>
using namespace std;typedef long long LL;
const int N=15;
LL m[N],a[N];LL exgcd(LL a,LL b,LL &x,LL &y) {if(b==0) {x=1,y=0;return a;}LL d=exgcd(b,a%b,y,x);y-=(a/b)*x;return d;
}int main() {int n;cin>>n;LL M=1;for(int i=1; i<=n; i++) {cin>>m[i]>>a[i];M*=m[i];}LL t=0;for(int i=1; i<=n; i++) {LL x,y;LL Mi=M/m[i];exgcd(Mi,m[i],x,y);t=(t+a[i]*Mi%M*x)%M;}t=(t+M)%M;cout<<t<<endl;return 0;
}/*
in:
3
99991 99990
99989 99988
99971 99970out:
282926331270118
*/




【参考文献】
https://www.luogu.com.cn/problem/P1495
https://www.luogu.com.cn/problem/P4777
https://www.acwing.com/problem/content/206/
https://blog.csdn.net/qq_33127317/article/details/108439841
https://www.luogu.com.cn/problem/solution/P1495
https://blog.csdn.net/qq_51352378/article/details/123491047
https://www.acwing.com/solution/content/148128/
https://www.acwing.com/solution/content/164120/

相关文章:

  • 马小帅面试遇“灵魂拷问“
  • 【前端】【面试】在 Nuxt.js SSR/SSG 应用开发的 SEO 优化方面,你采取了哪些具体措施来提高页面在搜索引擎中的排名?
  • Ubuntu22.04及以上版本buildroot SIGSTKSZ 报错问题
  • Java大厂面试:Java技术栈中的核心知识点
  • Java并发编程-多线程基础(三)
  • 集成算法学习
  • 具身系列——比较3种vpg算法方式玩CartPole游戏(强化学习)
  • 【Unity】使用XLua进行热修复
  • Ray开源程序 是用于扩展 AI 和 Python 应用程序的统一框架。Ray 由一个核心分布式运行时和一组用于简化 ML 计算的 AI 库组成
  • 4电池_基于开关电容的均衡
  • 项目实战-25年美赛MCM/ICM-基于数学建模与数据可视化的动态系统模型
  • agent初识
  • 0.1 基础阶段错题汇总
  • 前端 uni-app 初步使用指南
  • SpringMVC-第二章之RequestMapping注解详解
  • 一篇撸清 Http,SSE 与 WebSocket
  • 性能优化实践:性能监控体系
  • PyTorch_标量张量和数字的转换
  • React--》掌握react构建拖拽交互的技巧
  • Nginx 核心功能之正反代理
  • 日产淡水10万吨、全自动运行,万华化学蓬莱海水淡化厂投产
  • 全文丨中华人民共和国传染病防治法
  • 江西省公安厅警务保障部原主任辛卫平主动交代问题,正接受审查调查
  • 深入贯彻中央八项规定精神学习教育中央指导组派驻地方和单位名单公布
  • “麒麟王”亮相上海彩市,体彩即开票“瑞兽家族”迎来新成员
  • 国家发改委答澎湃:力争6月底前下达2025年两重建设和中央预算内投资全部项目清单