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

这篇具有很好参考价值的文章主要介绍了中国剩余定理以及扩展中国剩余定理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

中国剩余定理以及扩展中国剩余定理,算法与数据结构,算法,c++,扩展中国剩余定理算法,算法模板
中国剩余定理以及扩展中国剩余定理,算法与数据结构,算法,c++,扩展中国剩余定理算法,算法模板

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

中国剩余定理以及扩展中国剩余定理,算法与数据结构,算法,c++,扩展中国剩余定理算法,算法模板文章来源地址https://www.toymoban.com/news/detail-638149.html

代码

#include <iostream>
#include <algorithm>

using namespace std;
typedef long long LL;
int n;

LL exgcd(LL a, LL b, LL &x, LL &y){
    if(b==0){
        x = 1, y = 0;
        return a;
    }
    LL d, x1, y1;
    d = exgcd(b, a%b, x1, y1);
    x = y1, y = x1 - a/b*y1;
    return d;
}

LL excrt(LL m[], LL r[]){
    LL m1, m2, r1, r2, p, q;
    m1 = m[0], r1 = r[0];
    for(int i = 1; i < n; ++i){
        m2 = m[i], r2 = r[i];
        LL d = exgcd(m1, m2, p, q);
        if( (r2-r1)%d !=0 ) return -1; // 不能整除,说明无解
        p = p*(r2-r1)/d;
        p = (p%(m2/d) + (m2/d))%(m2/d);
        r1 = m1*p+r1;
        m1 = m1*m2/d;
    }
    return (r1%m1+m1)%m1;
    
}


int main(){
    cin >> n;
    LL m[30], r[30];
    for(int i = 0;i < n; ++i){
        cin >> m[i] >> r[i];
    }
    cout << excrt(m, r) << endl;
    
    
    return 0;
}

题目

题目 难度
AcWing.表达整数的奇怪方式 模板题

到了这里,关于中国剩余定理以及扩展中国剩余定理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RSA-CRT 使用中国剩余定理CRT对RSA算法进行解密

    使用中国剩余定理对RSA进行解密,可以提高RSA算法解密的速度。 有关数论的一些基础知识可以参考以下文章: 密码学基础知识-数论(从入门到放弃) 设p和q是不同的质数,且n = p*q。对于任意(X1, x2),其中 0 ≤ x1 p 和 0 ≤ x2 q,存在数x,其中 0 ≤ x n。 中国剩余定理给出了以下的

    2024年02月04日
    浏览(40)
  • 中国剩余定理(CRT)学习笔记

    (Aperp B) 表示 (gcd(A,B)=1) 。 (Amid B) 表示 (Bequiv 0pmod{A}(Aneq0)) 。 考虑以下这道题: 有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二。 問物幾何?—— 《孫子算經》 也就是说,求出下列关于 (x) 方程组的最小整数解: [begin{cases}xequiv2pmod{3}\\\\xequiv3pmo

    2024年02月01日
    浏览(55)
  • 【算法基础 & 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定理)

    原文链接 首先,在算法竞赛中,很多情况下会遇到数值很大的数据,这个时候,题目往往会让我们对某个数去摸,来控制数据范围。 在±*运算中,我们可以对每个数单独取模,然后再对运算之后的数取模。 但是除法比较特殊,例如: ( 40 ÷ 5 ) m o d 10 ≠ ( ( 40 m o d 10 ) ÷ ( 5

    2024年01月23日
    浏览(49)
  • 数论——欧几里得算法、裴蜀定理、扩展欧几里得算法 学习笔记

    最大公约数 最大公约数即为 Greatest Common Divisor,常缩写为 gcd。 一组整数的公约数,是指同时是这组数中每一个数的约数的数。 (pm 1) 是任意一组整数的公约数; 一组整数的最大公约数,是指所有公约数里面最大的一个。 特殊的,我们定义 (gcd(a, 0) = a) 。 最小公倍数 最

    2024年02月08日
    浏览(45)
  • 数据结构之二叉树与堆以及力扣刷题函数扩展

    个人主页:点我进入主页 专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题       数据结构初阶 欢迎大家点赞,评论,收藏。 一起努力 目录 1.前言 2.树 2.1概念  2.2树的相关概念 3.堆 3.1堆的概念 3.2小堆函数实现 4.力扣刷

    2024年02月04日
    浏览(40)
  • 【数据结构与算法】搜索算法(深度优先搜索 DFS和广度优先搜索 BFS)以及典型算法例题

    【数据结构与算法】系列文章链接: 【数据结构与算法】递推法和递归法解题(递归递推算法典型例题) 【数据结构与算法】系列文章链接: 【数据结构与算法】C++的STL模板(迭代器iterator、容器vector、队列queue、集合set、映射map)以及算法例题 【数据结构与算法】系列文章链

    2024年04月13日
    浏览(77)
  • 数据结构与算法 —— 最短路径Dijkstra算法(迪杰斯特拉)详细图解以及python实现

    目录 前言 1. 介绍 2. 加权图 2.1 概念 3. 最短路径 -- Dijkstra 算法 3.1 历史 3.2 Dijkstra 算法的基本思路 3.3 Dijkstra 算法图解 4.  python中dijkstra算法的实现 5. 总结  前两章我们讲到了关于图的基本知识,和广度/深度优先搜索。 本章,我们将介绍 加权图 和 最短路径 的相关知识。 最

    2024年02月12日
    浏览(52)
  • 欧拉定理 & 扩展欧拉定理

    观前提醒 :「文章仅供学习和参考,如有问题请在评论区提出」 目录 前置 剩余类(同余类) 完全剩余系(完系) 简化剩余系(缩系) 欧拉函数 欧拉定理 扩展欧拉定理 参考资料 给定一个正整数 (n) ,把所有的整数根据 模 (n) 的余数 (rin [0, n - 1]) 分为 (n) 类,每一类

    2024年02月13日
    浏览(40)
  • 【数据结构与算法】杨辉三角,相同字符的截取以及扑克牌

    ✨个人主页:bit me ✨当前专栏:数据结构 ✨每日一语:不要等到了你的人生垂暮,才想起俯拾朝花,且行且珍惜。 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows = 5 输出: [[1],[1,1

    2024年02月03日
    浏览(43)
  • 数据结构与算法大作业:走迷宫程序(C语言,DFS)(代码以及思路)

    好家伙,写大作业,本篇为代码的思路讲解   问题描述: 以一个 m * n 的长方阵表示迷宫, 0和1分别表示迷宫的通路和障碍。 设计一个程序, 对任意设定的迷宫, 求出一条从入口到出口的通路, 或得出没有通路的结论。 基本要求: (1) 实现一个以链表做存储的栈类型,

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包