扩展中国剩余定理(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 ... 阅读详情

相关推荐

大麦网回流票监控实战:如何利用sign参数和cookie实现自动抢票(避坑指南)

本文详细介绍了如何利用sign参数和cookie构建大麦网回流票监控系统,实现自动化抢票。通过分析大麦网票务系统的核心机制、获取关键身份凭证、逆向分析sign签名算法,并构建完整的监控系统,帮助用户高效捕捉回流票机会。文章还提供了实战避坑指南和合法合规的注意事项,确保系统稳定运行且符合平台规则。

weixin_28568819的博客 411

扩展中国剩余定理(ExCRT)

详解扩展中国剩余定理。

wanglianda2007的博客 2081

保姆级教程:用Ubuntu 22.04搭建RustDesk中继服务器(含Cloudflare避坑指南)

本教程详细指导如何在Ubuntu 22.04上搭建RustDesk中继服务器,解决跨国远程协作的延迟问题。涵盖环境配置、Rust编译优化、服务部署及Cloudflare代理设置等关键步骤,帮助用户实现高性能的私有中继服务。

weixin_29002209的博客 527

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

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

大桔骑士的学习笔记 1000

深入解析STM32驱动AT25DF321A FLASH芯片的SPI通信与数据完整性验证

本文深入解析STM32通过SPI通信驱动AT25DF321A FLASH芯片的全过程,包括硬件连接、驱动函数实现与数据完整性验证。重点介绍SPI配置、读写操作优化及CRC校验方法,确保数据存储的可靠性,为嵌入式存储系统开发提供实用指南。

agile9scrum的博客 1064

STM32F103C8T6 Bootloader开发实战:串口IAP固件升级与Keil工程配置详解

本文详细介绍了STM32F103C8T6 Bootloader开发实战,重点讲解串口IAP固件升级的实现方法与Keil uVision5工程配置。通过Flash分区管理、USART1通信协议设计及应用程序跳转机制等核心技术,帮助开发者掌握嵌入式系统固件升级方案,提升设备维护效率。

weixin_29165725的博客 436

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

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

FIVE 2707

从TI官方手册里挖细节:TPS5430负压电路那个不起眼却救命的Cd电容

本文深入解析TPS5430负压电路中关键Cd电容的作用与设计要点,揭示其在DC-DC电源设计中的重要性。通过对比TI手册和实战案例,详细阐述Cd电容在高频电流回路、能量缓冲和噪声抑制中的核心功能,并提供选型与布局指南,帮助工程师避免芯片烧毁风险,提升电路稳定性。

weixin_27102543的博客 357

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

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

2301_79248256的博客 1736

SAR成像概述

1. 发展概述 雷达是英文Radar(Radio detection and ranging)的音译,原意为“无线电探测与测距”。雷达的发明是无线电发展史上的里程碑,二战时,英国急需通过雷达探测空中金属物体来帮助搜寻德国飞机,这期间,雷达技术飞速发展,发展出了地对空、空对地轰炸、空对空火控、敌我识别等功能。雷达在第二次世界大战中发挥了重大作用,至今仍是军用和许多民用领域的重要传感器。 早期雷达系统通过时间延迟来测距,通过天线指向来测角,通过多普勒频移测速。1951年,Carl Wiley发现,通..

5069

即插即用系列(代码实践)| GRSL 2024 ARConv核心模块:自适应矩形卷积——专为遥感图像设计,打破固定方形卷积束缚

摘要: 本文提出了一种用于遥感图像处理的自适应矩形卷积模块(ARConv),解决了传统方形卷积核在处理复杂几何结构(如细长道路、密集建筑物)时导致的光谱混叠和边缘模糊问题。ARConv通过动态调整卷积核的长宽比和旋转角度,使卷积核形状与地物特征自适应匹配。该模块可即插即用于全色锐化、语义分割等遥感任务,有效提升边缘保持能力和光谱保真度。核心代码基于PyTorch实现,包含偏移量生成和几何变换逻辑,支持梯度缩放以稳定训练。

分享顶会顶刊论文即插即用模块 140

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

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

Turing_Sheep的博客 1609

2026华为OD面试题029:勇攀数字高峰

在给定的数字地形图里寻找登山路径,数字代表当前位置的海拔高度。要求从最低海拔出发,不断攀登,最终到达最高山峰。地图保证最低海拔和最高山峰都只有一个。 登山规则: - 路径上的海拔必须严格递增 - 只能向上下左右 4 个方向移动 - 路径必须从最低海拔开始,到最高海拔结束 - 每个地点只能走一次 - 每一步的攀登高度差必须大于 0,且不超过指定值 `K` 输出满足条件的登山路径的数量。

琅嬛福地 116

扩展中国剩余定理 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

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

ailanxier的博客 1216

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

题解: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、付费专栏及课程。

余额充值