\(\color{#0066ff}{ 题目描述 }\)

给定 \(n\)组非负整数 \(a_i, b_i\),求解关于 \(x\)的方程组\(\begin{cases} x \equiv b_1\ ({\rm mod}\ a_1) \\ x\equiv b_2\ ({\rm mod}\ a_2) \\ ... \\ x \equiv b_n\ ({\rm mod}\ a_n)\end{cases}\)

的最小非负整数解。

\(\color{#0066ff}{输入格式}\)

输入第一行包含整数 \(n\)。

接下来 \(n\)行,每行两个非负整数 \(a_i, b_i\)。

\(\color{#0066ff}{输出格式}\)

输出一行,为满足条件的最小非负整数 \(x\)。

\(\color{#0066ff}{输入样例}\)

3
11 6
25 9
33 17

\(\color{#0066ff}{输出样例}\)

809

\(\color{#0066ff}{数据范围与提示}\)

\(n≤10^5,1≤ai≤10^{12},0≤bi≤10^{12},bi<ai\),保证答案不超过 \(10^{18}\)。

请注意程序运行过程中进行乘法运算时结果可能有溢出的风险。

数据保证有解

\(\color{#0066ff}{ 题解 }\)

考虑已经求出前k-1个方程的解,即当前的x满足前k-1个方程,考虑第k个

发现x加减N(前k-1个方程的\(a_i\)的lcm)的整数倍,这个x依然满足前k-1个方程

因此我们要找到t,使得\(x+t*N\equiv b_i\mod a_i\)

移项,\(t*N\equiv b_i-x\mod a_i\)

因此\(k*a_i+t*N=b_i-x\)

这可以扩欧求,求出最小的非负整数解,更新ans就行了

#include<bits/stdc++.h>
#define LL long long
LL in() {char ch; LL x = 0, f = 1;while(!isdigit(ch = getchar()))(ch == '-') && (f = -f);for(x = ch ^ 48; isdigit(ch = getchar()); x = (x << 1) + (x << 3) + (ch ^ 48));return x * f;
}
const int maxn = 1e5 + 10;
LL A[maxn], B[maxn], n;
LL msc(LL x, LL y, LL z) {LL re = 0;while(y) {if(y & 1) re = (re + x) % z;x = (x + x) % z;y >>= 1;}return re;
}
LL exgcd(LL a, LL b, LL &x, LL &y) {if(!b) return x = 1, y = 0, a;LL r = exgcd(b, a % b, x, y);LL t = x - a / b * y;return x = y, y = t, r;
}
LL excrt() {LL ans = B[1], N = A[1];for(int i = 2; i <= n; i++) {LL x, y, c = ((B[i] - ans) % A[i] + A[i]) % A[i];LL gcd = exgcd(A[i], N, x, y);if(c % gcd) return 233;y = msc(y, c / gcd, A[i] / gcd);ans += y * N;N *= A[i] / gcd;((ans %= N) += N) %= N;}return ans;
}
int main() {n = in();for(int i = 1; i <= n; i++) A[i] = in(), B[i] = in();printf("%lld\n", excrt());return 0;
}

转载于:https://www.cnblogs.com/olinr/p/10323647.html

P4777 【模板】扩展中国剩余定理(EXCRT)相关推荐

  1. 中国剩余定理(CRT)扩展中国剩余定理(exCRT)

    前言 中国剩余定理(也叫孙子定理)并不是很复杂,由于最近用到了,以前学的时候还不写博客,所以现在补一下 中国剩余定理(CRT) 问题 给出nnn个同余方程 x≡a1(modp1)x≡a2(modp2) ...

  2. [扩展中国剩余定理(EXCRT)]

    前言 与 这个 定理 搏斗了 一天终于 把它kill 了 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 进入正题 题目描述 给定 n 组 非负整数 ai,bi,求解关于 x 的方程组 x ≡ a1 (mo ...

  3. P4777-[模板]扩展中国剩余定理(EXCRT)

    正题 题目链接:https://www.luogu.org/problem/P4777 题目大意 求方程 {x≡a1(modb1)x≡a2(modb2)...x≡an(modbn)\begin{cas ...

  4. 扩展中国剩余定理 exCRT 学习笔记

    前言 由于 \(\{\mathrm{CRT}\}\subseteq\{\mathrm{exCRT}\}\),而且 CRT 又太抽象了,所以直接学 exCRT 了. 摘自 huyufeifei 博客 这 ...

  5. 中国剩余定理(CRT)和扩展中国剩余定理(EXCRT)

    Tip:建议读者不要太着急后翻,按照顺序阅读有助于理解 中国剩余定理(CRT) 问题引出 "有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何?"即,一个整数除以三余 ...

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

    中国剩余定理 中国剩余定理(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 ...

  7. 中国剩余定理 扩展中国剩余定理 模板

    中国剩余定理解线性同余线性方程 /*long long gcd(LL a,LL b) {return b==0?a:gcd(b,a%b); }*/ #include<bits/stdc++.h& ...

  8. 中国剩余定理 扩展中国剩余定理 (模板)

    中国剩余定理 && 扩展中国剩余定理 一个整数除以三余二,除以五余三,除以七余二,求这个整数. 例题: 一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % ...

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

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

  10. 模线性方程(中国剩余定理+扩展中国剩余定理)

    已知一系列除数和模数,求最小的满足条件的数 我们先考虑一般的情况,即模数不互质.(扩展中国剩余定理) 我们考虑两个方程的情况 x%M=R x=k1∗M+Rx=k1 * M+Rx=k1∗M+R x%m= ...

最新文章

  1. linux系统分析命令,Linux操作系统基础解析之(四)——Linux基本命令剖析(2)
  2. Tree-Structured LSTM模型
  3. python 装饰器 二 (装饰带参数的函数)
  4. 六、Linux 文件基本属性
  5. 线性多播/线性广播/线性扩散/一般线性网络码
  6. 洛谷 - P2324 - 骑士精神 - A*搜索
  7. java多线程总结二:后台线程(守护线程)
  8. asp.net web.config连接mysql数据库_ASP.NET中使用web.config配置数据库连接
  9. java404_java这个404你能解决吗?
  10. 计算机风扇维修,电脑风扇轴承磨损的简易维修方法
  11. 郝斌c语言96-99,《祁连山Photoshop CS3专家讲堂系列教程》[ISO]
  12. python使用 photoshop-python-api 调用ps处理批量动作操作
  13. 操作系统简述复习笔记
  14. VTK:交互与拾取——单位拾取
  15. 华为高管丁耘跑28公里后突发疾病去世:在公司工作26年
  16. A Monocular SLAM System Leveraging Structural Regularity in Manhattan World
  17. 人脸和身份证不匹配_人脸识别身份信息不匹配是什么意思
  18. Android搜索框searchView的使用
  19. 用个人博客打造一个酷酷的工作流
  20. 地理信息系统明年将服务全运会

热门文章

  1. DEDECMS 另类***
  2. Eclipse 4.7(Oxygen)安装Tomcat Plugin 后没有小猫图标解决方法
  3. hibernate环境搭建
  4. 设计模式---命令模式(C++实现)
  5. Redis之各版本特性
  6. android通知栏内添加快捷键_Android实现向Launcher添加快捷方式的方法
  7. python 存储数据到有向无环图寻找路径_Python 随即生成DAG(有向无环图)
  8. 平安智慧企业大规模离职_中星微获“2020人工智能芯片技术创新企业奖”
  9. 寻找linux最新版本,在各大Linux发行版中安装和使用inxi以查找Linux系统详细信息...
  10. 操作系统原理(三)进程管理、线程、并发和并行