扩展中国剩余定理(EXCRT)

【模板】扩展中国剩余定理(EXCRT) 传送门:洛谷:p4777 中国剩余定理(CRT) ⎧⎩⎨⎪⎪⎪⎪⎪⎪xxx≡≡⋮≡a1(modp1)a2(modp2)an(modpn){x≡a1(modp1)x≡a2(modp2)⋮x≡an(modpn)\begin{cases} x &\equiv& a_1 \pmod {p_1} \\ x &\equiv& a_2 \pmod {p_2} \\ &\vdots& \\ x &\e... 阅读详情

扩展中国剩余定理(EXCRT)

中国剩余定理可以解形如下面的一元线性同余方程组:
{ans≡x1(moda1)ans≡x2(moda2)ans≡x3(moda3)...ans≡xn(modan) \left\{\begin{matrix} ans\equiv x_1\pmod{a_1} \\ ans\equiv x_2\pmod{a_2} \\ ans\equiv x_3\pmod{a_3}\\ .\\ .\\ .\\ ans\equiv x_n\pmod{a_n} \end{matrix}\right.⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧​ans≡x1​(moda1​)ans≡x2​(moda2​)ans≡x3​(moda3​)...ans≡xn​(modan​)​
其中a1,a2,a3…an两两互素。

如果a1,a2,a3…an不两两互素时,就不能利用中国剩余定理去解上述方程组了。因为不存在另外n-1个ai的乘积关于剩下一个数的逆元。

我们先考虑将如下方程组合并成一个方程
{ans≡x1(moda1)ans≡x2(moda2)\left\{\begin{matrix} ans\equiv x_1\pmod{a_1} \\ ans\equiv x_2\pmod{a_2} \\ \end{matrix}\right.{ans≡x1​(moda1​)ans≡x2​(moda2​)​

该方程存在唯一解ans,使得ans=m1a1+x1=m2a2+x2ans=m_1a_1+x_1=m_2a_2+x_2ans=m1​a1​+x1​=m2​a2​+x2​成立。
所以有方程
m1a1+x1=m2a2+x2m_1a_1+x_1=m_2a_2+x_2m1​a1​+x1​=m2​a2​+x2​即
m1a1−m2a2=x2−x1m_1a_1-m_2a_2=x_2-x_1m1​a1​−m2​a2​=x2​−x1​
成立。
如果有gcd(a1,a2)∣(x2−x1)gcd(a_1,a_2)|(x_2-x_1)gcd(a1​,a2​)∣(x2​−x1​),我们则可以通过扩展欧几里得算法求得整数解。
否则无解。

在求得一组解(m1,m2)后,可以将上述方程组转化为以下方程:
ans≡X(modlcm(a1,a2))ans\equiv X\pmod {lcm(a_1,a_2)}ans≡X(modlcm(a1​,a2​))
其中X=m1a1+b1=m2a2+b2X=m_1a_1+b_1=m_2a_2+b_2X=m1​a1​+b1​=m2​a2​+b2​。

显然X是上述方程组的一个特解。
设M=lcm(a1,a2)M=lcm(a_1,a_2)M=lcm(a1​,a2​),那么通解为X′=kM+XX'=kM+XX′=kM+X

可以将上述结论推广至由k个同余方程组成的一元线性同余方程组。

算法流程如下:
设xk为前k个一元线性同余方程合并后的一个特解,xk+1为第k+1个同余方程的特解。ak为前k个一元线性同余方程合并后的模数,即lcm(a1,a2,...,ak)lcm(a1,a2,...,a_k)lcm(a1,a2,...,ak​)。ak+1为第k+1个同余方程的模数。
for k=1 to n:for\space k=1\space to\space n:for k=1 to n:
1、解方程akx−ak+1y=gcd(ak,ak+1)a_kx-a_{k+1}y=gcd(a_k,a_{k+1})ak​x−ak+1​y=gcd(ak​,ak+1​)。
2、若gcd(ak,ak+1)∣(xk+1−xk)gcd(a_k,a_{k+1})|(x_{k+1}-x_k)gcd(ak​,ak+1​)∣(xk+1​−xk​),则可以求出akx−ak+1y=xk+1−xka_kx-a_{k+1}y=x_{k+1}-x_kak​x−ak+1​y=xk+1​−xk​的一个特解x′=xk+1−xkgcd(ak,ak+1)xx'=\frac{x_{k+1}-x_k}{gcd(a_k,a_{k+1})}xx′=gcd(ak​,ak+1​)xk+1​−xk​​x;否则无解,算法结束。
3、合并前k+1个方程的后一个特解为xk+1=akx′+xkx_{k+1}=a_kx'+x_kxk+1​=ak​x′+xk​,
4、合并前k+1个方程的后的模数为lcm(ak,ak+1)lcm(a_k,a_{k+1})lcm(ak​,ak+1​)

知道对于方程ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b),由一对特解(x,y),那么由通解X,Y,X=k⋅bgcd(a,b)+x,Y=k⋅agcd(a,b)+yX=k\cdot\frac{b}{gcd(a,b)}+x,Y=k\cdot\frac{a}{gcd(a,b)}+yX=k⋅gcd(a,b)b​+x,Y=k⋅gcd(a,b)a​+y。
在上述算法流程中,如果xk+1−xkgcd(ak,ak+1)\frac{x_{k+1}-x_k}{gcd(a_k,a_{k+1})}gcd(ak​,ak+1​)xk+1​−xk​​较大,直接与x相乘可能会造成溢出。我们可以把x’限制在[0ak+1gcd(ak,ak+1)][0\frac{a_{k+1}}{gcd(a_k,a_{k+1})}][0gcd(ak​,ak+1​)ak+1​​]中,通过慢速乘法(类似与快速幂)防止数据溢出。

模板代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void exgcd(ll a,ll b,ll &d,ll &x,ll &y)
{
	if(!b){
		x=1;y=0;d=a;return ;
	}
	else{
		exgcd(b,a%b,d,y,x);y-=(a/b)*x;
	}
}
ll mul(ll a,ll b,ll mod)
{
	ll ans=0;
	while(b)
	{
		if(b&1)ans=(ans+a)%mod;
		a=(a+a)%mod;
		b>>=1;
	}
	return ans;
}
int main(void)
{
	int n;
	scanf("%d",&n);
	ll b1=0,a1=1;
	ll b2,a2;
	while(n--)
	{
		scanf("%lld%lld",&a2,&b2);
		ll x,y,d,t;//求解x*a1+b1=b2(mod a2) 
		t=((b2-b1)%a2+a2)%a2;//x*a1=b2-b1(mod a2)
		exgcd(a1,a2,d,x,y);//求解x*a1+y*a2=gcd(a1,a2) 
		ll g=a2/d;
		x=mul(x,t/d,g);
		b1+=x*a1;
		a1*=a2/d;//lcm
		b1=(b1%a1+a1)%a1;
	}
	printf("%lld\n",b1);
}
【代码超详解】洛谷 P4777 【模板】扩展中国剩余定理(EXCRT) 一、题目描述 二、算法分析说明与代码编写指导 三、AC 代码 #include<cstdio> #pragma warning(disable:4996) using namespace std; template<class _Ty> _Ty gcd(const _Ty& a, const _Ty& b) {//a, b > 0 return ... 阅读详情

相关推荐

华南理工大学电子与信息学院23年预推免复试面试经验贴

华南理工大学电子与信息学院23年预推免复试面试经验贴

Scut_Ty的博客 3296

扩展中国剩余定理(ExCRT)

详解扩展中国剩余定理。

wanglianda2007的博客 2081

Zemax光机热集成分析:从FEA数据导入到光学性能评估实战

在精密光学系统设计中,环境温度变化和机械应力是导致像质恶化的关键因素,这涉及到光、机、热多物理场的耦合分析。其核心原理在于,通过有限元分析(FEA)软件(如ANSYS)模拟热与力学载荷下的结构变形和温度分布,并将这些物理场数据精准映射到光学设计软件(如Zemax)中,以评估其对调制传递函数(MTF)、点列图等核心光学指标的影响。这项技术的工程价值在于,它使设计从静态的理想模型跃升至动态的工程现实,能够在设计阶段就预测并补偿环境扰动,从而显著提升光学系统在航空航天、车载镜头、高功率激光等严苛工况下的可靠性与稳

weixin_30565327的博客 356

【算法学习笔记】37:扩展中国剩余定理(EXCRT)求解任意线性同余方程组

中国剩余定理仅适用于模数m1​...mn​两两互质的情况,如果没有这个限制条件则不能使用。下面进行一般情况的解法推导,注意虽然叫扩展中国剩余定理(EXCRT),实际上只是扩宽了中国剩余定理(CRT)的求解限制,解法和原理上和CRT完全没啥关系。

大桔骑士的学习笔记 1000

将Matlab程序打包成.exe独立可执行程序

将Matlab程序打包成.exe独立可执行程序,在未安装Matlab的电脑上也能运行Matlab程序。

简简单单的学习笔记,致力于帮助更多前进路上的朋友~ 5万+

Unity3D实战:5分钟搞定RTSP监控视频播放(附完整代码)

本文提供了一套在Unity3D中快速集成RTSP监控视频播放的实战方案。通过采用LibVLCSharp for Unity这一成熟稳定的跨平台中间件,开发者可以轻松实现RTSP流的解码与渲染,并附有完整的C#代码示例,帮助用户在5分钟内完成集成,适用于智慧园区、安防监控等3D可视化场景。

weixin_29001655的博客 191

中国剩余定理(CRT) && 扩展中国剩余定理(EX_CRT)

中国剩余定理(解决模数互质的同余方程组)   在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。 具体解法分三步: 找到三个数:从3和5的公倍数中找出被7除余2的最小数20,从3和7的公倍数中找出被5除余3的最小数63,最后从...

FIVE 2707

微信小程序一键跳转公众号(使用 official-account 组件)

在当今移动互联网时代,用户体验已成为应用成功的关键因素之一。微信小程序作为一种便捷的应用形式,广泛应用于各个行业,为用户提供了丰富的服务和信息。然而,如何进一步提升用户体验,使其在小程序中能够更方便地获取相关信息,成为开发者需要关注的重要课题。实现一键跳转到公众号的功能,正是一个有效的解决方案。通过这一功能,用户可以轻松访问公众号,获取更多内容和服务,从而增强与品牌的互动和粘性。本文将详细介绍如何在微信小程序中实现这一功能,并提供相关的操作步骤和注意事项。

不迁怒,不贰过。小知识,大智慧。 3127

【算法基础篇】(五十)扩展中国剩余定理(EXCRT)深度精讲:突破模数互质限制

本文系统介绍了扩展中国剩余定理(EXCRT)的原理与实现。EXCRT突破了中国剩余定理(CRT)要求模数互质的限制,通过迭代合并方程的方式求解任意线性同余方程组。文章详细讲解了EXCRT的数学推导过程、核心工具(扩展欧几里得算法和快速乘)、完整C++实现,并分析了两个典型例题(洛谷P4777模板题和P4774屠龙勇士题)。针对常见误区提供了避坑指南,对比了EXCRT与CRT的特点和应用场景。EXCRT是解决非互质模数方程组的有效工具,在算法竞赛和数论问题中具有重要应用价值。

2301_79248256的博客 1736

开关电源中的高频振荡噪声及其抑制方法

在开关电源的工作过程中,随着开关管的开关动作,电流和电压波形会出现剧烈的波动,尤其是在开关管切换的瞬间,往往会导致较强的过冲现象。开关电源中的高频振荡噪声是导致电磁兼容问题的主要源头之一,尤其是MOS管的通断和整流二极管的反向恢复过程中,会产生较强的高频振荡噪声。通过合理调节R和C的值,可以大大缓解高频振荡带来的EMC问题,从而有效提升电源的电磁兼容性。整流二极管反向恢复时的振荡会导致高频噪声产生,这些高频噪声源可被传导到电源的输出端,甚至可能通过电源的共地路径扩散到其他电路,影响系统的稳定性和可靠性。

硬核科技 1529

基于YOLOv11的人脸识别系统:从构建到应用的全流程指南

深度学习是机器学习的一个分支,旨在通过多层神经网络模拟人脑的认知能力。它能够从大量数据中自动提取特征,并进行准确的预测和分类。在计算机视觉领域,深度学习技术已经取得了显著的成果,尤其是在图像识别、目标检测等方面。YOLOv11是YOLO系列模型的最新版本,结合了卷积神经网络(CNN)和其他创新技术。它在保持高精度的同时,显著提高了推理速度。YOLOv11的结构轻量且高效,非常适合实时目标检测任务。人脸检测的目标是从图像或视频中定位所有人脸的位置。

FJN110的博客 184

第三十章 数论——扩展中国剩余定理

详细讲解扩展中国剩余定理的推导和步骤,帮助你彻底掌握该算法的原理并熟练写出代码模板。

Turing_Sheep的博客 1609

YOLO26涨点改进 | 小目标损失函数独家改进篇 | TGRS 2025 | 引入AdaFocalLoss损失函数,改进小目标检测,自适应聚焦小目标与样本分布不平衡,提升检测精度与训练稳定性

本文提出将AdaFocalLoss损失函数应用于YOLO26模型优化,有效提升小目标检测性能。AdaFocalLoss通过目标尺寸感知机制和IoU引导的动态调节,自动调整训练权重和聚焦程度,解决了样本不平衡问题。相比传统损失函数,它无需手动调参,能增强训练稳定性,在多尺度、复杂场景下表现优异。文章详细介绍了AdaFocalLoss的原理、优势及实现方法,并提供了代码集成指南。实验表明该方法能显著提升检测精度和鲁棒性,特别适用于小目标检测任务。

Ai缝合怪、助力小伙伴高效发论文 335

扩展中国剩余定理 EXCRT

拓展中国剩余定理 EXCRT 题目描述 给定nnn个同余式,m1,m2...,mnm_1,m_2...,m_nm1​,m2​...,mn​不一定互质 问,满足上述同余式最小的xxx是多少 解决方法 显然不能再用CRT的方法来求解了 那么我们考虑逐一进行求解 假设当前已经求出前k−1k-1k−1个方程组的解,记为xxx 且有M=∏i=1k−1miM=\prod_{i=1}^{k-1}m_iM=∏i...

Daniel__d的博客 301

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

#中国剩余定理(CRT)及其扩展(EXCRT)详解 博客园食用效果更佳 问题背景   孙子定理是中国古代求解一次同余式方程组的方法。是数论中一个重要定理。又称中国余数定理。一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作《孙子算经》卷下第二十六题,叫做“物不知数”问题,原文如下:   有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。《孙子算经》中首次提到了同余方程组问题,以及以上具体问题的解法,因此在中文

ailanxier的博客 1216

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

excrt(扩展中国剩余定理)

EXCRT(扩展中国剩余定理) 拖更了 此时的模数不一定两两互质,导致了不能直接像之前那样只满足其中一个模数然后依次累加。 所以就只能换其他思路 /* 不妨来看其中两个条件满足 x=a1+m1*x1 x=a2+m2*x2 然后直接变换就得到m1*x1-m2*x2=a2-a1 要使得x尽量的小,那么x1和x2都要尽量的小 根据裴蜀定理 ax+by=c有整数解的充要条件就是(a,b)|c 也就是c是gcd(a,b)的整数倍数 所以基于此 设g

qq_45744856的博客 1464

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

题解:P4777 【模板】扩展中国剩余定理(EXCRT)

本文介绍了如何利用扩展中国剩余定理(EXCRT)解决非互质模数的同余方程组问题。通过将两个同余方程转化为不定方程,使用扩展欧几里得算法求出通解,最终合并为单一方程。代码实现展示了这一过程,关键步骤包括求解公约数、调整解的范围,以及逐步合并所有方程。该方法有效解决了传统中国剩余定理无法处理非互质模数的情况,最终输出最小非负整数解。

Benny_250的博客 713

【luogu4777】扩展中国剩余定理(EXCRT)[数论 扩展中国剩余定理]

P4777 【模板】扩展中国剩余定理(EXCRT) 我的扩中终于出生了!!!!!! 历经磨难 开始没看题 这个题居然是求 x ≡ b (mod a) 啊啊啊啊啊啊就一直输出无解 然后又把判断无解的 if(c%gcd) return -1; 打成了if(!c%gcd) return -1; 而且还有几个地方忘了开long long 都这样了我都还有6昏 tql具体是酱紫: 就是用扩欧...

weixin_30256901的博客 157

Marching Orders(扩展中国剩余定理EXCRT)

摘要:Dean Bob Roberts采用随机算法确定教授游行顺序,方法是从字母排序列表中按m mod n选取第一个人,随后缩短列表并重复该过程。给定一个游行顺序,需判断是否存在整数m能生成该顺序。若存在,输出最小的m;否则输出NO。该问题转化为解线性同余方程组,通过扩展欧几里得和CRT算法求解。样例输入6DFEACB对应输出YES 39,而7DFEGACB则输出NO。

2401_87622134的博客 890

【学习笔记】扩展中国剩余定理(EXCRT)

扩展中国剩余定理(EXCRT)

2503_91106447的博客 1150

【数学】一元一次同余方程组、中国剩余定理(CRT)与扩展中国剩余定理(exCRT)

讲解一元一次同余方程租的定义、中国剩余定理与扩展中国剩余定理的基础

OI博客 1418

P4777 【模板】扩展中国剩余定理(EXCRT)

扩展中国剩余定理 模板

2403_87530627的博客 1006

扩展中国剩余定理 (ExCRT) 学习笔记

扩展中国剩余定理 (ExCRT) 学习笔记 预姿势: 扩展中国剩余定理和中国剩余定理半毛钱关系都没有 问题: 求解线性同余方程组: \[ f(n)=\begin{cases} x\equiv a_1\pmod {m_1}\\ x\equiv a_2\pmod {m_2}\\ ... ...\\ x\equiv a_n\pmod {m_n}\\ \end{cases}\] 的解\(x\)。...

weixin_30273501的博客 226
上一篇: 二次剩余与Cipolla算法
下一篇: NOI 2018 屠龙勇士(exCRT)
WedsonLin
博客等级 码龄7年 1粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值