扩展中国剩余定理

扩展的中国剩余定理 中国剩余定理最早由中国古代数学家孙子(孙秀英)在《孙子算经》一书中提出。这本书是中国古代数学的重要著作之一,成书于4世纪至5世纪之间。中国剩余定理是一种用于求解一类线性同余方程组的定理。线性同余方程组是指形式为x ≡ b1 (mod n1), x ≡ b2 (mod n2), ..., x ≡ br (mod nr)的方程组,其中x是未知数,bi是已知的整数,ni是不同的正整数。中国剩余定理的由来是为了解决天文学和农业中的一些实际问题。 阅读详情

扩展中国剩余定理( e x c r t \boldsymbol{excrt} excrt)是用来解决同余方程组的问题的,我们之前说过中国剩余定理,但是他有一个应用的限制就是 l c m { p i } = 1 \boldsymbol{lcm\{p_i\}=1} lcm{pi​}=1,但是如果某个恶心的出题人要求这个 l c m { p i } ≠ 1 \boldsymbol{lcm\{p_i\}\neq 1} lcm{pi​}​=1怎么办呢?你就可以用扩展中国剩余定理吊打他

e x c r t \boldsymbol{excrt} excrt跟普通的 c r t \boldsymbol{crt} crt的思想有一个很大的不同, c r t \boldsymbol{crt} crt使用的是构造法,而 e x c r t \boldsymbol{excrt} excrt是直接暴力

还是对于这样的一个方程

{ x ≡ a 1   m o d   p 1 x ≡ a 2   m o d   p 2 ⋯ x ≡ a n   m o d   p n \begin{cases} \boldsymbol{x\equiv a_1\ mod\ p_1} \\ \boldsymbol{x\equiv a_2\ mod\ p_2} \\ \qquad \cdots \\ \boldsymbol{x\equiv a_n\ mod\ p_n} \\ \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧​x≡a1​ mod p1​x≡a2​ mod p2​⋯x≡an​ mod pn​​
其中 l c m { p i } ≥ 1 \boldsymbol{lcm\{p_i\}\geq 1} lcm{pi​}≥1
我们可以考虑这样一个思路,把问题转化成两个方程的求解,然后把解出来的结果合并成一个新的方程,然后再和下一个求解,以此类推,通过 n − 1 \boldsymbol{n-1} n−1次合并,我们就可以得出结果了


引理:
对于两个方程
{ x ≡ a 1   m o d   p 1 x ≡ a 2   m o d   p 2 ⋯ x ≡ a n   m o d   p n \begin{cases} \boldsymbol{x\equiv a_1\ mod\ p_1} \\ \boldsymbol{x\equiv a_2\ mod\ p_2} \\ \qquad \cdots \\ \boldsymbol{x\equiv a_n\ mod\ p_n} \\ \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧​x≡a1​ mod p1​x≡a2​ mod p2​⋯x≡an​ mod pn​​
如果对于 x ′ \boldsymbol{x^\prime} x′如果满足前 k \boldsymbol{k} k个方程,那么 s . t .   x = x ′ + t ⋅ l c m { p j } , x \boldsymbol{s.t.\ x=x^\prime+t\cdot lcm\{p_j\},x} s.t. x=x′+t⋅lcm{pj​},x为第 k + 1 \boldsymbol{k+1} k+1个方程的解,其中 t ∈ Z + , j ∈ [ 1 , k ] \boldsymbol{t\in Z^+,j\in[1,k]} t∈Z+,j∈[1,k],证明也是显然的,就是同余的基本定义


有了这个,我们接下来就只需要求出 t \boldsymbol{t} t的最小整数解了,设 l c m { p j } = M \boldsymbol{lcm\{p_j\}=M} lcm{pj​}=M,我们的问题就转化成了求 x ′ + t M ≡ a k + 1   m o d   p k + 1 \boldsymbol{x^\prime+tM\equiv a_{k+1}\ mod\ p_{k+1}} x′+tM≡ak+1​ mod pk+1​
移项,可以得到 t M ≡ a k + 1 − x ′   m o d   p k + 1 \boldsymbol{tM\equiv a_{k+1}-x^\prime\ mod\ p_{k+1}} tM≡ak+1​−x′ mod pk+1​的 t \boldsymbol{t} t的最小整数解,那么也就是求方程
a x ≡ p   m o d   b \boldsymbol{ax\equiv p\ mod\ b} ax≡p mod b
的最小整数解
变形,可以得到 a x + b y = p \boldsymbol{ax+by=p} ax+by=p
那么我们可以先利用扩展欧几里得求出 a x ′ + b y ′ = g c d ( a , b ) \boldsymbol{ax^\prime+by^\prime=gcd(a,b)} ax′+by′=gcd(a,b)的解
那么 x \boldsymbol{x} x就等于 x ′ p g c d ( a , b ) \boldsymbol{\frac{x^\prime p}{gcd(a,b)}} gcd(a,b)x′p​
那么通过这个方法,令 M = a , a k + 1 − x ′ = p , p k + 1 = b \boldsymbol{M=a,a_{k+1}-x^\prime=p,p_{k+1}=b} M=a,ak+1​−x′=p,pk+1​=b,从而求出 x \boldsymbol{x} x即 t \boldsymbol{t} t
同时这里我们也可以发现,这组同余方程有解的条件是 g c d ( M , p k + 1 ) ∣ a k + 1 − x ′ \boldsymbol{gcd(M,p_{k+1})|a_{k+1}-x^\prime} gcd(M,pk+1​)∣ak+1​−x′,否则无解


然后就是代码了,这里放上的是洛谷模板题的代码,因为模板题保证有解,所以不用判断无解的情况,但是如果题目没有说明应该放上去

#include <bits/stdc++.h>
using namespace std;

# define Rep(i,a,b) for(int i=a;i<=b;i++)
# define _Rep(i,a,b) for(int i=a;i>=b;i--)
# define RepG(i,u) for(int i=head[u];~i;i=e[i].next)

typedef long long ll;

const int N=1e5+5;

template<typename T> void read(T &x){
   x=0;int f=1;
   char c=getchar();
   for(;!isdigit(c);c=getchar())if(c=='-')f=-1;
   for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+c-'0';
    x*=f;
}

# define int long long

int n;
int a[N],b[N],x,y;

int mul(int a,int b,int p){
    int res=0;
    while(b){
        if(b&1)res+=a,res%=p;
        a=a+a,a%=p;
        b>>=1;
    }
    return res;
}

int exgcd(int a,int b,int &x,int &y){
    if(!b){
        x=1,y=0;
        return a;
    }
    int d=exgcd(b,a%b,x,y);
    int z=y;
    y=x-a/b*y;
    x=z;
    return d;
}

int excrt(){
    int ans=a[1],M=b[1];
    Rep(i,2,n){
        int GCD=exgcd(M,b[i],x,y);
        int val=((a[i]-ans)%b[i]+b[i])%b[i];
        x=(x%b[i]+b[i])%b[i];
        int t=mul(x,val,b[i])/GCD;
        int lM=M;
        M=M/GCD*b[i];
        ans=ans+mul(lM,t,M);
        ans%=M;
    }
    return ans;
}

signed main()
{
    read(n);
    Rep(i,1,n)read(b[i]),read(a[i]);
    printf("%lld\n",excrt());
    return 0;
}
中国剩余定理与扩展中国剩余定理 中国剩余定理(CRT) 我好蔡啊 不学这个东东我连任意模数NTTNTTNTT都学不了 问题 中国剩余定理用于求解同余方程组 {x≡a1(mod&ThinSpace;&ThinSpace;m1)x≡a2(mod&ThinSpace;&ThinSpace;m2)......x≡ak(mod&ThinSpace;&ThinSpace;mk) \left\{... 阅读详情

相关推荐

中国剩余定理【CRT】及 扩展中国剩余定理【扩展CRT】

CRT(中国剩余定理) 据说,这是唯一一个以中国来命名的定理。又叫孙子定理。 用现代数学的语言来说明的话,中国剩余定理给出了以下的一元线性同余方程组:(S中m i与m j互质) 求一个满足集合S的通解X; 想必电脑前的你满脸都是疑惑(也可能只是我太蒟蒻。。。) 对于S1(即S集合中的第一项式子),x=a1+k1*m1; 对于S2,x=a2+k2*m2; S3,x=a3+k3*m3;… 对于X,要使X%m1=a1,X%m2=a2,X%m3=a3,所以,X的表达式里,a1到an一定都会出现,且满足条件。 那么

qq_50214614的博客 543

Turtle Puzzle: Rearrange and Negate(Round 929)

【代码】Turtle Puzzle: Rearrange and Negate(Round 929)

GordrnGhost的博客 878

中国剩余定理与扩展 Lucas定理与扩展 学习笔记

中国剩余定理 问题 求同余方程组 ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪x≡c1(modm1)x≡c2(modm2)x≡c3(modm3)...x≡ck(modmk){x≡c1(modm1)x≡c2(modm2)x≡c3(modm3)...x≡ck(modmk) \left\{ \begin{array}{c} x\equiv c_1\pmod {m_1}\\ x\equiv c_2\pmo...

zyf2000 1万+

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

题目 洛谷P4777扩展中国剩余定理(EXCRT) 题解 由于mi之间不保证互质,所以Mi和mi也不一定互质,所以不能用exgcd求Mi(mod mi)的逆元。考虑用数学归纳法,假设已经求出了前i个方程构成的方程组的一个解X0,通解为X。 考虑第(i+1)个方程,设前(i+1)个方程构成的方程组的一个解为x’。 要找出一个k,使x’满足所有条件,成为新解。将上式变形,就成了一个以k为未知数的线性同余方程,可以用exgcd判断方程是否有解,并进一步求出解。 求

zjgmartin的博客 253

五子棋ai:极大极小搜索和α-β剪枝算法的思想和实现(qt和c++)(一)引言和界面设计

引言 alphaGo击败围棋冠军李世石的新闻让我对棋类博弈产生了浓厚的兴趣,无奈本人不会围棋,但算是一个五子棋业余爱好者,于是乎希望通过实现一个五子棋ai来了解相关算法和知识。 五子棋在英文中又称Gobang,five-in-row,还有两个称呼:gomoku和renju(连珠)。我来简要介绍一下区别。由于五子棋已经被机器严格证明了是一种**“不公平”的游戏,先手黑子是绝对占优的,并且先手有必胜*...

livingsu的博客 1万+

深入理解「二进制掩码」:从原理到实践

二进制掩码本质上是一个二进制数,用于通过位操作(如与、或、非、异或等)选择性地操作目标数据的某些位。掩码的每一位(bit)可以看作一个“开关”,决定是否对目标数据的对应位进行操作。二进制掩码是位操作的灵魂,掌握它不仅能提升代码效率,还能解锁许多高级编程技巧。从基础的位提取到复杂的子集枚举,掩码的应用无处不在。希望本文的讲解和代码示例能帮助你快速上手,并在实际项目中灵活运用。如果你有更多关于掩码的疑问或应用场景,欢迎在评论区留言交流!

m0_73494933的博客 2432

中国剩余定理(crt)和扩展中国剩余定理(excrt)

crt是用来对于一个一元线性同余方程求解的算法: 其中 m 1,m2​,m3​...mk​为两两互质的整数 定理:我们设 ,设 设 = 为 模 意义下的逆元.这个一元线性同余方程组的通解为:证明(来自百度百科):下面上板子题:【模板】中国剩余定理(CRT)/ 曹冲养猪 - 洛谷https://www.luogu.com.cn/problem/P1495 拓展crt的作用也是求解下列方程组,但是约束条件不同: 其中 m 1,m2​,m3​...mk​为不一定两两互质的整数.我们每

qq_49593247的博客 362

Mann-Kendall检验全解析:从原理到11种变体及Python实现

本文全面解析Mann-Kendall检验,从基础原理到应对自相关、季节性等复杂数据的11种关键变体,如Hamed-Rao修正、季节性MK和趋势自由预白化(TFPW)。详细阐述各方法的适用场景与数学原理,并提供完整的Python实战代码,帮助研究者针对不同数据特性选择最稳健的趋势分析方法。

weixin_29050271的博客 457

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

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

Turing_Sheep的博客 1609

V4L2教程(1):Ubuntu V4L2开发环境搭建与设备探索

欢迎来到V4L2学习指南的第一篇!本文将带你从零开始,在Ubuntu系统上搭建完整的V4L2视频采集开发环境。无论你是想开发视频监控、视频会议还是机器视觉应用,掌握V4L2都是Linux视频开发的必经之路。 **本节学习目标**: - 理解V4L2的基本概念和架构 - 搭建Ubuntu下的V4L2开发环境 - 掌握v4l2-ctl等调试工具的使用 - 学会检测和配置USB摄像头设备

琅嬛福地 417

使用 MATLAB/Simulink + Simscape Electrical,构建一个含光伏并网系统与SVG的联合仿真模型,实现动态无功补偿与电压支撑

摘要:本文详细介绍了基于Simulink的SVG与光伏并网逆变器联合系统建模方法。通过构建包含光伏单元、SVG主电路和控制模块的仿真模型,实现动态无功补偿与电压稳定。重点阐述了ip-iq无功检测算法、双闭环控制和SVPWM调制等关键技术。仿真结果表明,该系统能快速响应无功需求,在10ms内将功率因数提升至0.98以上,有效抑制电压波动。文章为新能源并网系统中的电能质量治理提供了实用解决方案,并提出了进一步优化方向。

xiaoheshang_123的博客 322

中国剩余定理&扩展中国剩余定理

那么就有ax+by=k*gcd(a,b),那么我们知道x0,y0是ax+by=gcd(a,b)的一组解时那么他的特解就是k*x0,ky0;(其中通过d=exgcd(a,b,x,y),lcm(a1,a2)=a1*a2/d;同余方程:x≡a(mod b) <=> x(mod b)=a(mod b) <=> x%b=a%b;a/b=a*b^(-1)(表示逆元)=a/b*b*b^(-1)(mod p)那么如果求ax+by=c的一组解的话 其有解当且仅当 gcd(a,b)|c,c能把gcd(a,b)整除掉。

m0_73830679的博客 2398

Unity 工具 之 SoftMask软遮罩 实现 UI 边缘渐变过渡的简单使用介绍

目录Unity 工具 之 SoftMask软遮罩 实现 UI 边缘渐变过渡的简单使用介绍一、简单介绍二、Mask 实现的遮罩效果三、Soft Mask 实现遮罩效果四、 Soft Mask 的一些设置五、插件下载Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。

仙魁XAN 8573

中国剩余定理以及扩展中国剩余定理

中国剩余定理必须有两两互质的条件;而扩展中国剩余定理没有限制(可能互质,也能不互质)。所以只记忆一个扩展中国剩余定理的板子就行.

qq_35650513的博客 3700

YOLOv11模型剪枝实战:让检测速度翻倍,精度仅降1%的终极优化教程

模型剪枝是YOLOv11落地边缘场景的“关键一步”——它让模型在“瘦身”的同时,几乎不损失精度。从稀疏化训练到通道剪枝,再到工程部署,本教程已为你打通全流程。现在就动手尝试,让你的YOLOv11模型在嵌入式设备、移动端上也能“飞起来”——相信我,当你看到剪枝后的模型在资源受限设备上仍能精准检测时,你会明白这份技术的价值。

m0_64661770的博客 711

手把手教你用Pytorch代码实现Transformer模型(超详细的代码解读)

本文整理了非常清楚的Transformer模型结构图,建议大家在看代码的时候能结合这个结构图来理解,这样理解起来会比较容易! 用Pytorch实现Transformer的完整代码

捡起一束光的博客 7万+

中国剩余定理 扩展中国剩余定理

一、中国剩余定理 对于 x ≡ a1(mod m1) x ≡ a2(mod m2) x ≡ a3(mod m3) ………… 且 m1 m2 m3…两两互质 此时可运用中国剩余定理 首先求出 s=m1m2m3 M[i]=s/m[i] t[i]为M[i]关于m[i]的逆元 则最终求得的x =∑(a[i]*t[i]*M[i])%s 代码如下 #include<bits/stdc++.h> #...

henulmh的博客 348

Statistics and Machine Learning Toolbox

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

中国剩余定理及扩展

《孙子算经》中有这么个问题:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?我们可以用如下的同余方程组表示这个问题:

The Shawshank Redemption 341

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

中国剩余定理以及扩展

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9rFcSwc-1679046787323)(null)]如果我们直接进行乘法,结果就会爆掉。这时我们就要用到龟速乘。在乘的时候,我们要怎么取模呢?解决了中国剩余定理模数必须为素数的限制,求解方法改为一个一个求。这样将两组数据并成一组,就可以完成了…,所以不需要逆元,可以直接除。

m0_56608057的博客 194

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

中国剩余定理&扩展中国剩余定理 入门详解

中国剩余定理 例题 已知以下nnn同余方程: x≡a1(mod&amp;amp;amp;ThinSpace;&amp;amp;amp;ThinSpace;m1)x≡a_1(\mod m_1)x≡a1​(modm1​) x≡a2(mod&amp;amp;amp;ThinSpace;&amp;amp;amp;ThinSpace;m2)x≡a_2(\mod m_2)x≡a2​(modm2​) x≡a3(mod&amp;amp;amp;ThinSpace;&

ZSJZ_liuzian的博客 992

中国剩余定理&扩展中国剩余定理学习笔记

详细讲解了中国剩余定理和扩展中国剩余定理,并给出推导证明以及模板

zhanxufeng的博客 735
上一篇: TODO list
下一篇: [HEOI2013] Segment
NephrenRuqInsania
博客等级 码龄8年 20粉丝 115原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值