UPDATE

  • 2021 - 12 - 10:补充扩展中国剩余定理

    EXCRT,额外开了一篇博客写。

  • 2021 - 12 - 21:修改了一两句话,更严谨一些。

问题概述

小奥里的韩信点兵问题:

{ x ≡ a 1 ( m o d m 1 ) x ≡ a 2 ( m o d m 2 ) ⋯ x ≡ a k ( m o d m k ) \begin{cases}x\equiv{a_1}\pmod{m_1}\\x\equiv{a_2}\pmod{m_2}\\\cdots\\x\equiv{a_k}\pmod{m_k}\end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧​x≡a1​(modm1​)x≡a2​(modm2​)⋯x≡ak​(modmk​)​

m m m 数组的数两两互质,求 x x x 的最小非负整数解。

求解

构造一个数组 ans,使得 ∀ i ∈ [ 1 , k ] \forall\ i \in [1,k] ∀ i∈[1,k]:

{ a n s i ≡ 0 ( m o d m 1 ) ⋯ a n s i ≡ a i ( m o d m i ) ⋯ a n s i ≡ 0 ( m o d m k ) \begin{cases}{ans_i} \equiv 0 \pmod{m_1}\\ \cdots\\ {ans_i} \equiv {a_i} \pmod{m_i}\\ \cdots \\ {ans_i} \equiv 0\pmod {m_k}\end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​ansi​≡0(modm1​)⋯ansi​≡ai​(modmi​)⋯ansi​≡0(modmk​)​

易得:
a n s i = ( ∏ i = 1 k m i ( i ≠ j ) ) × a i × e i ans_i = (\prod_{i=1} ^ k m_i (i\ne j)) \times a_i \times e_i ansi​=(i=1∏k​mi​(i​=j))×ai​×ei​

e i e_i ei​ 为我们仍不知道的数。

不妨令 $M\gets \prod_{i=1} ^ k m_i $,

就可以推出:
$
\dfrac{M}{m_i} \times e_i \equiv 1 \pmod {m_i}
$,即 e i e_i ei​ 即为 M m i \dfrac{M}{m_i} mi​M​ 在取模 m i m_i mi​ 意义下的逆元。

此处用扩展欧几里得求逆元,在输入时也一起统计好 M M M。

最后的答案就是:
$
\sum\limits_{i=1}^k ans_i\ \bmod M
$

代码实现

#include<bits/stdc++.h>
using namespace std;#define int long long
#define rint register int
int n, p;
int x, y;inline int read ()
{int x = 1, s = 0;char ch = getchar ();while (ch < '0' or ch > '9') {if (ch == '-') x = -1; ch = getchar ();}while (ch >= '0' and ch <= '9') s = s * 10 + ch - '0', ch = getchar ();return x * s;
}inline void write (int x)
{if (x > 9) write (x / 10);putchar (x % 10 ^ 48);
}inline void exgcd (int a, int b)
{if (!b){x = 1, y = 0;return;}exgcd (b, a % b);int t = x;x = y, y = t - a / b * y;
}const int maxn = 15;
int a[maxn], b[maxn], ans;
int mul = 1, mi[maxn];signed main ()
{n = read ();for (rint i (1); i <= n; ++i){a[i] = read (), b[i] = read ();mul *= a[i];}for (rint i (1); i <= n; ++i){mi[i] = mul / a[i];exgcd (mi[i], a[i]);ans += b[i] * mi[i] * (x > 0 ? x : x + a[i]);}write (ans % mul);return 0;
}

例题

UVA756 Biorhythms


EXCRT

详见:《数论 · 扩展中国剩余定理(EXCRT)》


—— E n d End End——

数论 · 中国剩余定理(CRT)相关推荐

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

    博客园食用效果更佳 目录 问题背景 扩展欧几里得算法 有啥用呢: 裴蜀等式: 裴蜀等式求解过程: 同余方程求解过程: C R T \mathrm{CRT} CRT 问题的解决方法 构造出解 逆元求法 ...

  2. 第二十九章 数论——中国剩余定理与线性同余方程组

    第二十九章 数论--中国剩余定理与线性同余方程组 一.中国剩余定理 1.作用: 2.内容: 3.证明: (1)逆元的存在性 (2)验证定理的正确性 4.代码实现: (1)步骤: (2)问题: (3)代 ...

  3. RSA中的中国剩余定理(CRT)和多素数(multi-prime)

    RSA的中国剩余定理(CRT)和多素数(multi-prime) 写了个代码,方便计算大数运算: git@github.com:mrpre/bn_tool.git 本片中的运算都可以使用这个工具进行计 ...

  4. [数论]-----中国剩余定理(扩展中国剩余定理)

    中国剩余定理 中国剩余定理(CRT)用于求形如: { x ≡ a 1 ( m o d m 1 ) x ≡ a 2 ( m o d m 2 ) ⋯ ⋯ x ≡ a k ( m o d m k ) \be ...

  5. 数论-中国剩余定理(crt) 与拓展中国剩余定理(excrt)

    中国剩余定理(crt) [用途] 求方程组中最小的非负整数解X X ≡ { a 1 ( m o d m 1 ) a 2 ( m o d m 2 ) . . . a n ( m o d m n ) X\ ...

  6. 数论——中国剩余定理及其扩展详解

    文章目录 概述 中国剩余定理扩展 例题 总结 概述 引入: 一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作<孙子算经>卷下第二十六题,叫做"物不知数&qu ...

  7. 数学--数论--中国剩余定理 拓展 HDU 1788

    再次进行中国余数定理 问题描述 我知道部分同学最近在看中国剩余定理,就这个定理本身,还是比较简单的: 假设m1,m2,-,mk两两互素,则下面同余方程组: x≡a1(mod m1) x≡ a2(mod ...

  8. 数学--数论--中国剩余定理+扩展中国剩余定理(孙子定理)

    中国剩余定理 问题 求解同余方程组 其中m1,m2,m3...mkm_1,m_2,m_3...m_km1​,m2​,m3​...mk​为两两互质的整数 求x的最小非负整数解 定理 令M=∏i=1kmi ...

  9. 中国剩余定理 - CRT and Garner’s Algorithm

    中国剩余定理 #include <iostream> #include <chrono> #include <random>#include <NTL/ZZ. ...

最新文章

  1. shell介绍及基本用法
  2. golang设置运行CPU数量及sync.Mutex全局互斥锁的使用示例
  3. 嵌入式linux开发考试题目,练一练!3道经典嵌入式Linux面试题,答案在文末。
  4. [蓝桥杯][2019年第十届真题]等差数列
  5. 商标申请流程图及时间_长沙注册商标面要多长时间及注册申请流程
  6. git分支建立删除,打tag
  7. 深入学习typedef和typename
  8. mysql使用join和不使用join_在SQL或MySQL中不使用JOIN关键字的联接有问题吗?
  9. ubuntu系统下安装gcc
  10. 【脚本解析笔记】文件批量重命名
  11. python拉格朗日插值_拉格朗日插值多项式在Python中的实现
  12. 微信昵称特殊字符保存StringEscapeUtils
  13. OTA 差分升级包的制作
  14. Algorithm:三数之和为0
  15. Unity中采用二进制存档与读档
  16. 【jq练习】基本选择器
  17. 千万别惹程序员,否则会在代码注释里,告诉这家公司有多坑
  18. 生产力工具评测:云笔记、离线笔记、云 Office、Markdown 编辑器
  19. 2016年终总结——学生时代的结束、北漂生活的开始
  20. 国二c语言是人工改卷还是机器改卷,雅思机考作文是机器批卷吗,雅思机考,阅读和听力是机器判卷,还是人工判卷?...

热门文章

  1. 草图大师SU模型如何快速的下载到软件中?
  2. 2021-07-08 javascript 上
  3. 再从淘宝数据结构来看电子商务中商品属性设计
  4. u盘无法格式化不在计算机中,U盘无法进行格式化处理怎么办?
  5. Swift入门第一天(踩坑)
  6. 腾讯云cdn自动刷新api调用功能实现-python
  7. 刚入职985的他,发了Science!
  8. FORM表单的几大属性
  9. ABC-Bishop2-(bfs和distra的区别)
  10. MySQL数据库面试题五(2020最新版)