这就是神奇的非互质版CRT,同余方程组中各个模数可能不互质,如果再用以前互质版的做法就会出错(这个的原因我也没有深究,如果有兴趣的小伙伴懂的话欢迎在评论区里指点本蒟蒻)。
对于模数不互质的情况,需要逐个合并方程求解,具体证明如下图:

还是FZU 1402的代码, 非互质版算法同样适用于模数互质的题目,有兴趣的同学可以做一下hdu 1573
FZU 1402:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<climits>
using namespace std;
typedef long long ll;
const int maxn=14;
int n;
ll a[maxn],m[maxn];
ll gcd(ll a,ll b) {return !b?a:gcd(b,a%b);
}
ll exgcd(ll a,ll b,ll &x,ll &y) {if (!b) {x=1,y=0;return a;}ll d=exgcd(b,a%b,y,x);y-=(a/b)*x;return d;
}
ll inv(ll a,ll m) {ll x,y;ll d=exgcd(a,m,x,y);if (d==-1) return -1;return (x%m+m)%m;
}
bool merge(ll a1,ll m1,ll a2,ll m2,ll &a3,ll &m3) {ll d=gcd(m1,m2),c=a2-a1;if (c%d) return false;c=(c%m2+m2)%m2,c/=d,m1/=d,m2/=d,c*=inv(m1,m2),c=(c%m2+m2)%m2,c=(c*m1*d)+a1;m3=m1*m2*d;a3=(c%m3+m3)%m3;return true;
}
ll crt() {ll a1=a[1],m1=m[1];for (int i=2;i<=n;i++) {ll aa,mm;if (!merge(a1,m1,a[i],m[i],aa,mm)) return -1;a1=aa,m1=mm;}return (a1%m1+m1)%m1;
}
int main() {while(scanf("%d",&n)!=EOF) {for (int i=1;i<=n;i++) scanf("%I64d%I64d",&m[i],&a[i]);printf("%I64d\n",crt());}return 0;
}

扩展中国剩余定理模板相关推荐

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

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

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

    证明:挂个大佬的博客:点击查看 挂上代码供以后白嫖: LL n,m[N],a[N];///模数为m,余数为a, X % m = aLL extend_gcd(LL a,LL b,LL &x,L ...

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

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

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

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

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

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

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

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

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

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

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

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

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

    中国剩余定理 例题 已知以下 n n n同余方程(所有 m i m_i mi​互质): x ≡ a 1 ( m o d m 1 ) x≡a_1(\mod m_1) x≡a1​(modm1​) x ≡ ...

最新文章

  1. USEARCH —— 最简单易学的扩增子分析流程
  2. 【Android 组件化】路由组件 ( 注解处理器参数选项设置 )
  3. 360漏洞更新后系统进不去
  4. 2014/School_C_C++_A/5/勾股定理
  5. python原类、类的创建过程与方法
  6. [LeetCode] 100. Same Tree Java
  7. dspscififo历程_DSP2812 SCI FIFO模式调试心得
  8. spring调用webservice
  9. linux安装mysql菜鸟教程_[新手教程]Linux环境部署MYSQL过程
  10. 使用腾讯云OCR文字识别
  11. python删除表格第一行不动_Excel教程,教你如何设置表格第一行和第一列固定不动,一直显示...
  12. Link warning:LNK4199 解决
  13. 如何成为荣耀开发者:注册与认证常见问题
  14. Shamir秘密共享协议
  15. 怎么把线稿提取出来_99%的人不知道!教你怎么提取绘画作品的线稿!
  16. 机器学习【吴恩达|周志华|李宏毅|算法】清单
  17. Centos7配置DNS访问百度
  18. 新手第二课:atof()函数的头文件
  19. 计算机的音乐数字要全是数字,数字中的音乐
  20. 一阶RC滤波器的算法实现(低通和高通)

热门文章

  1. Python:peewee常用操作CRUD
  2. python和scre_python学习日志10
  3. 报错:Cannot use v-for on stateful component root element because it renders multiple elements.
  4. cacheable注解原理_SpringBoot:缓存注解@Cacheable详解
  5. 读计算机带笔记本还是台式,选台式机还是选笔记本?这里有点心得告诉你
  6. 用ffmpeg将多张图片转为视频
  7. 成都办理或者补办社保卡的秘籍
  8. 凸包 Codeforces605C Freelancer's Dreams
  9. android按键静音键功能实现
  10. 记录一次在linux上配置ssl证书