中国剩余定理(又称 孙子定理)

中国剩余定理(孙子定理) 中国剩余定理解题 阅读详情

博客图片都飞了,所以看的时候请多多担待。

中国剩余定理是数论中的一个关于一元线性同余方程组的定理,说明了一元线性同余方程组有解的准则以及求解方法。也称为孙子定理。

本文大部分使用的内容来自维基百科。

中国剩余定理说明:

这里写图片描述
题意:给出你n个ai和mi,最后让求出x的最小值是多少。

假设整数m1, m2, … , mn其中任两数互质,则对任意的整数:a1, a2, … , an,方程组 (S)有解,并且通解可以用如下方式构造得到:

1.设这里写图片描述是整数m1, m2, … , mn的乘积,并设
这里写图片描述,即 这里写图片描述是除了mi以外的n − 1个整数的乘积。

2.设这里写图片描述为这里写图片描述模这里写图片描述的数论倒数:这里写图片描述

3.方程组(S)的通解形式为:
这里写图片描述
在模 M的意义下,方程组 (S)只有一个解:这里写图片描述

**注:**对任何这里写图片描述,由于这里写图片描述,所以这里写图片描述说明存在整数 这里写图片描述使得这里写图片描述这样的这里写图片描述叫做 {\displaystyle M_{i}} M_{i}模 {\displaystyle m_{i}} m_{i}的数论倒数。

具体证明可以参照wiki 这里写链接内容

例子也可以看wiki中的“物不知数”。

以下给出一般情况下也就是整数m1, m2, … , mn其中任两数互质情况下的模板:

关于扩展欧几里得可以看以前的文章这里是传送门哦~

代码1:

////m[]任意两个互质
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>

using namespace std;
#define LL long long
const int N=1e6+10;
const LL Me=1e9+7;
const int inf=0x3f3f3f3f;

int a[N],m[N];

LL exgcd(LL a,int b,LL &x,LL &y)
{
    if(a==0&&b==0)
        return -1;
    if(!b)
    {
        x=1;
        y=0;
        return a;
    }
    LL d=exgcd(b,a%b,y,x); //回代 注意这里的与扩展gcd的不同
    y-=a/b*x;
    return d;
}



LL CRT(int n)
{
    LL M=1;
    for(int i=0;i<n;i++)
        M*=m[i];
    LL ret=0;
    for(int i=0;i<n;i++)
    {
        LL x,y;
        LL tm=M/m[i];

        int xxx=exgcd(tm,m[i],x,y);
        ret=(ret+tm*x*a[i])%M;
    }
    return (ret+M)%M;
}



int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d%d",&m[i],&a[i]);
    }
    cout<<CRT(n)<<endl;

    return 0;
}

拓展:

中国剩余数定理是适用于n个mi两两互质的情况的,如果不互质呢,下面就是一个转换:
模不两两互质的同余式组可化为模两两互质的同余式组,再用孙子定理直接求解。
84=22×3×7,160=25×5,63=32×7,由推广的孙子定理可得 这里写图片描述与这里写图片描述同解。

注意求解过程中应先检查同余式组上是否存在矛盾,存在矛盾的同余式组无解。
这里写图片描述

证明过程:

这里写图片描述

代码2:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>

using namespace std;
#define LL long long
const int N=1e6+10;
const LL Me=1e9+7;
const int inf=0x3f3f3f3f;

int a[N],m[N];

LL exgcd(LL a,int b,LL &x,LL &y)
{
    if(a==0&&b==0)
        return -1;
    if(!b)
    {
        x=1;
        y=0;
        return a;
    }
    LL d=exgcd(b,a%b,y,x); //回代 注意这里的与扩展gcd的不同
    y-=a/b*x;
    return d;
}



LL CRT(int n)
{
    if(n==1)
    {
        if(m[0]>a[0])
            return a[0];
        else
            return -1;
    }
    LL x,y,d;
    for(int i=1; i<n; i++)
    {
        if(m[i]<=a[i])
            return -1;
        d=exgcd(m[0],m[i],x,y);
        if((a[i]-a[0])%d!=0)  ////不能整除则无解
            return -1;
        LL t=m[i]/d;
        x=((a[i]-a[0])/d*x%t+t)%t; ////第0个与第i个模线性方程的特解
        a[0]=x*m[0]+a[0];
        m[0]=m[0]*m[i]/d;
        a[0]=(a[0]%m[0]+m[0])%m[0];
    }
    return a[0];
}



int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0; i<n; i++)
    {
        scanf("%d%d",&m[i],&a[i]);
    }
    cout<<CRT(n)<<endl;

    return 0;
}
中国剩余定理(CRT) 中国剩余定理 阅读详情

相关推荐

中国剩余定理又叫孙子定理

中国剩余定理又叫孙子定理 在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以333余222),五五数之剩三(除以555余333),七七数之剩二(除以777余222),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。 ...

ydsrwex的博客 1086

中国剩余定理

中国剩余定理又称孙子定理或中国余数定理,是数论中的一个关于一元线性同余方程组的定理,说明了一元线性同余方程组有解的准则以及求解方法。在古代称为孙子定理、鬼谷算、秦王暗点兵、物不知数等。用现代数学的语言来说明的话,中国剩余定理给出了以下的一元线性同余方程组:假设整数m1,m2,m3…mn两两互素,则对于任意的整数x,满足以上方程组。

qq_43589852的博客 1万+

管道机器人手臂机械结构设计cad【8张】+三维图+设计说明书+绛重

履带式管道机器人适用于各种管道环境,包括直管道、弯曲管道、水平管道、垂直管道等,其灵活性和适应性使得它可以应对不同形状和尺寸的管道,完成全面的检测和维护工作。管道机器人研究具有重要的现实意义和深远的社会影响,通过提高工作效率、降低人员风险、提升服务质量、节约成本资源和促进科技创新等方面的作用,为现代工程技术领域的发展和进步做出了积极的贡献。管道机器人是一种能够在管道内部执行各种任务的智能机器人,而管道机器人的机械臂对于管道机器人在管道内执行任务的灵活性、稳定性和效率至关重要。

kejigongjiang的博客 943

中国剩余定理(孙子定理)详解

题目引出 在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。 解决方法 1.找出三个数:从3和5的公倍数中找出被7除余1的最小数15,从3和7的公倍数中找出被5除余1 的最小数21,最后从5和7的公倍数中找出除3余1的最小数70。 2.用15乘以2(2为最终结果除以7的余数),用21乘以3(3为最终结果除以5的余数),同理,用70乘以2(2为

彼岸花苏陌的博客 3万+

八股文(Unity篇)

在Unity中,协程是通过迭代器实现的,即将协程函数的返回值类型定义为IEnumerator,然后使用yield语句暂停协程的执行,并在需要恢复执行时通过MoveNext()方法继续执行。Unity中的协程是一种能够在主函数中暂停和恢复执行的功能,它使用了C#的迭代器。Resources方式:Resources方式:使用Resources.Load方法加载Resources文件夹下的资源,这种方式的好处是简单易用,无需手动打包资源,但是会导致应用包变得较大,加载速度较慢,不适合较大的资源文件。

m0_50816320的博客 1万+

DNN加速器脉动阵列轻量级瞬时故障检测

本文系统综述了面向深度神经网络(DNN)脉动阵列加速器的轻量级瞬时故障检测技术。通过分析比较算法级校验(ABFT)、数值异常监测(剪裁、中值滤波等)、硬件编码检错(AN码、剩余码)以及选择性冗余等方案,指出这些方法能以5%-10%的开销实现对权重和激活比特翻转的高效检测,远低于传统ECC/冗余计算的成本。研究显示,结合多种轻量技术可构建多层防护体系,在保障推理可靠性的同时保持加速器的高性能特性。该成果为安全关键领域的DNN加速器设计提供了重要参考。

欢迎交流! 1073

中国剩余定理(又称孙子定理)

中国剩余定理,又名孙子定理 1、 首先: 能求解什么问题呢? 问题: 一堆物品 3个3个分剩2个 5个5个分剩3个 7个7个分剩2个 问这个物品有多少个   解这题,我们需要构造一个答案 我们需要构造这个答案 5*7*inv(5*7,  3) % 3  =  1 3*7*inv(3*7,  5) % 5  =  1 3*5*inv(3*5,  7) % 7  =  1...

JKdd123456的博客 2375

U-net复现pytorch版本 以及制作自己的数据集并训练

GitHub链接: https://github.com/milesial/Pytorch-UNet 论文链接:

candice5566的博客 3万+

中国剩余定理 即 孙子定理

中国剩余定理 即 孙子定理 。 中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。又称中国剩余定理。 中国剩余定理------ 解法如下:假设存在一个数M M%A=a , M%B=b , M%C=c 并且A,B,C必须俩俩互质。满足这一条件下: 存在一个R1使得 , K1=A*B*R1 ,K1%C==1. 存在一个R2使得 , K2=C*B*R2,K1%A==1. 存在

u012129719的专栏 1283

2026年迈瑞医疗嵌入式岗位面试题集(含参考答案)

文章摘要 本文总结了嵌入式开发面试中的30道题目,涵盖7大模块:嵌入式硬件与底层驱动、C/C++语言基础、操作系统与多线程编程、网络通信协议、数据结构与算法、开发工具与调试能力、综合素养与职业认知。重点解析了I²C通信协议的工作原理、速率选择及异常排查方法;USB的报文协议与四种传输类型及其适用场景;硬中断与软中断的区别及设计注意事项;字节序的概念与处理方法;以及C++中static和const关键字的核心作用。内容深入实用,适用于嵌入式开发者的技术提升与面试准备。

Open 52

读懂 SAP S/4HANA 里的 SAP Fiori 架构:前端服务器、搜索链路、传统应用接入与内容组织全景解析

摘要:SAP Fiori架构并非简单的系统连接图,而是明确区分界面层与业务数据层的三层分工体系:用户交互层(浏览器与Fiori launchpad)、前端技术层(SAPUI5运行环境)和业务数据层(SAP S/4HANA后端)。这种分离实现了生命周期解耦,前端专注于统一体验治理,后端处理核心业务逻辑。值得注意的是,SAP Fiori front-end server本质仍是ABAP系统,负责UI技术组件运行。虽然SAP S/4HANA推荐嵌入式部署,但独立部署在多系统场景中仍有价值。典型Fiori应用通过O

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 179

中国剩余定理(孙子定理)学习笔记

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

Richard_1101的博客 1353

微信小程序 - 详细实现随机生成订单号,微信小程序创建订单号思路,不重复订单号生成的方法,小程序自动生成固定规则的订单号流水号(必须是唯一不重复的订单号,生成唯一订单号)详细生成方法,示例代码教程最新

微信小程序,vue2,vue3,订单号,流水号思路,微信小程序 详细实现随机生成订单号(JavaScript),随机生成商户订单号,根据当前时间随机生成流水号或者订单号,微信小程序之商家订单,订单号随机生成器,自动生成固定规则的订单号(前缀+采购日期+6位流水号)微信小程序 生成外卖顺序号,生成订单号或流水号简单方法,实现订单号生成唯一的解决方案,如何按日期生成订单号,14位编号=8位日期(+6位流水号),自动生成订单号(固定+日期+数字),销售订单号自动生成。在微信小程序开发中,详解实现随机生成创建订单号

🏆 前端领域优质创作者 1185

网络安全-数论入门-孙子定理(CRT)

孙子定理是中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。又称中国余数定理。

王文聪的博客 1017

信息传输仿真:卫星通信系统仿真_(12).卫星通信系统仿真软件介绍

卫星通信系统仿真软件是进行卫星通信系统设计和性能优化的重要工具。通过这些软件,用户可以模拟和分析各种通信场景,验证不同的通信协议和算法,优化系统参数和配置。本节介绍了 MATLAB Simulink、NS-3、OPNET 和 SystemVue 的基本功能、特点和配置方法,希望对读者在选择和使用仿真软件时提供参考。在实际应用中,建议根据项目需求和团队能力,综合考虑选择合适的仿真软件。

2401_87715305的博客 1278

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

中国剩余定理(新)

中国剩余定理(孙子定理),这是用来解出一堆线性同余方程组同一解的定理,通常会给出一对同余方程。,对于其他的等式同理, 这就说明,这是一个正确解。(这里有多组解的原因也是, 有。个未知数(把同余方程列乘等式),因此有无数解)你可以尝试带入进去。比如这里带入第一个式子。来得到一组解, 因此只需要证明可行性即可。由上面我们可以知道,中国剩余定理是通过。的乘积,那么通解应该也就知道了,即。这个因子,那么其他项就可以被取模。就一定可以通过 exgcd 求出。, 那么M1 * t1 在取模。给完美消掉,只剩下第一项。

blind5883的博客 1195

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【常用算法总结——中国剩余定理】

中国剩余定理,又称孙子定理(什么名字啊)是中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。首先来一个小!例!题!吧! 注释:三数为a b c,余数分别为 m1 m2 m3,%为求 今年 余计算,&&是“且”运算。 1、分别找出能被两个数整除,而满足被第三个整除余一的最小的数。 k1%b==k1%c==0 && k1%a==1; ...

weixin_30594001的博客 224

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

中国剩余定理介绍及例题

意思是:将除以3得到的余数乘以70,将除以5得到的余数乘以21,将除以7得到的余数乘以15,全部加起来后除以105(或者105的倍数),得到的余数就是答案。没有同余的情况,用的方法是“逐步约束法”,就是从“除7余4的数”中找出符合“除5余3的数”,就是再7上一直加7,直到所得的数除5余3。题目可以看成,被5除余2,被6除余4,被7除余4。看到那个“被6除余4,被7除余4”了么,有同余数的话,只要求出6和7的最小公倍数,再加上4,就是满足后面条件的数了,6X7+4=46。因此 的逆映射也存在。

MCzes的博客 1794

数论 中国剩余定理

中国剩余定理,又名孙子定理 能求解什么问题呢? 问题: 一堆物品 3个3个分剩2个 5个5个分剩3个 7个7个分剩2个 问这个物品有多少个 解这题,我们需要构造一个答案 我们需要构造这个答案 5*7*inv(5*7, 3) % 3 = 1 3*7*inv(3*7, 5) % 5 = 1 3*5*inv(3*5, 7) % 7 = 1inv 表...

henucm的博客 908

中国剩余定理,扩展中国剩余定理与扩展卢卡斯定理

中国剩余定理 中国剩余定理,又称孙子定理,是目前所有定理中唯一用中国命名的定理 首先来看这样一道小学数学题 有一个数 xxx, x%3=2x\%3=2x%3=2,x%5=3x\%5=3x%5=3,x%7=2x\%7=2x%7=2 求最小满足三个式子的 xxx 的值 这道题用数学的写法就是这样的 {x≡2(mod3)x≡3(mod5)x≡2(mod7) \begin{cases} x\equiv...

tidongCrazy_的博客 283

中国剩余定理 Chinese remainder theorem(CRT)

中国剩余定理又称孙子定理, 主要是为了解线同余方程组 x ≡ a1 ( mod  m1 )x ≡ a2 ( mod m2 )x ≡ a3 ( mod m3 )        .........x ≡ an ( mod mn ) 成立条件是m1,m2, ... ,mn 两两互质, 则对任意的整数:a1,a2, ... ,an,方程组S 有解  并且可以

bitwater的空间 2492
上一篇: 归并排序求逆序对模板
下一篇: 求最大的最大公约数 51nod 1079 (好题)
Puppet__
博客等级 码龄10年 319粉丝 328原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值