P4777 【模板】扩展中国剩余定理(EXCRT)
思路
中国剩余定理解决的是这样的问题
求x满足
\]
在模数互质的情况下,解为
\]
其中\(M=\prod_{i}m_i\),\(M_i=\frac{M}{m_i}\),\(M_i^{-1}\)为\(M_i\)在模\(m_i\)意义下的逆元
在模数不互质的情况下,我们需要扩展中国剩余定理
设有两个同余方程
\]
其中\(m_1\)与\(m_2\)不互质
可得到
x=a_2+m_2x_2
\]
所以得到
\]
变形后有
\]
用exgcd解出最小的\(x_1\)
则有
\]
相当于把两个式子合并在一起,EXcrt就是将所有式子合并完即可
代码
因为不想写龟速乘所以用了__int128
#include <cstdio>
#include <algorithm>
#include <cstring>
#define int __int128
using namespace std;
int exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1,y=0;
return a;
}
int req=exgcd(b,a%b,x,y);
int t=x;
x=y;
y=t-a/b*y;
return req;
}
int gcd(int a,int b){
return (b==0)?a:gcd(b,a%b);
}
int lcm(int a,int b){
return (a*b)/gcd(a,b);
}
int calc(int a,int b,int c){//ax+by=c
int d=gcd(a,b);
int x1,x2;
exgcd(a,b,x1,x2);
b/=d;
x=(x*(c/d)%b+b)%b;
return ans;
}
pair<int,int> merge(int a1,int m1,int a2,int m2){
int x1=calc(m1,m2,a2-a1);
return make_pair(x1*m1+a1,lcm(m1,m2));
}
int n,a[100100],m[100100];
signed main(){
long long mx;
scanf("%lld",&mx);
n=mx;
for(int i=1;i<=n;i++){
scanf("%lld",&mx);
m[i]=mx;
scanf("%lld",&mx);
a[i]=mx;
}
int mida=a[1],midm=m[1];
for(int i=1;i<n;i++){
pair<int,int> t= merge(mida,midm,a[i+1],m[i+1]);
mida=t.first;
midm=t.second;
}
printf("%lld\n",(long long)mida);
return 0;
}
P4777 【模板】扩展中国剩余定理(EXCRT)的更多相关文章
- 中国剩余定理(CRT) & 扩展中国剩余定理(ExCRT)总结
中国剩余定理(CRT) & 扩展中国剩余定理(ExCRT)总结 标签:数学方法--数论 阅读体验:https://zybuluo.com/Junlier/note/1300035 前置浅讲 前 ...
- 扩展中国剩余定理 (exCRT) 的证明与练习
原文链接https://www.cnblogs.com/zhouzhendong/p/exCRT.html 扩展中国剩余定理 (exCRT) 的证明与练习 问题模型 给定同余方程组 $$\begin{ ...
- 扩展中国剩余定理 (ExCRT)
扩展中国剩余定理 (ExCRT) 学习笔记 预姿势: 扩展中国剩余定理和中国剩余定理半毛钱关系都没有 问题: 求解线性同余方程组: \[ f(n)=\begin{cases} x\equiv a_1\ ...
- 扩展中国剩余定理(EXCRT)快速入门
问题 传送门 看到这个问题感觉很难??? 不用怕,往下看就好啦 假如你不会CRT也没关系 EXCRT大致思路 先考虑将方程组两两联立解开,如先解第一个与第二个,再用第一个与第二个的通解来解第三个... ...
- 扩展中国剩余定理 exCRT 学习笔记
前言 由于 \(\{\mathrm{CRT}\}\subseteq\{\mathrm{exCRT}\}\),而且 CRT 又太抽象了,所以直接学 exCRT 了. 摘自 huyufeifei 博客 这 ...
- P4777 【模板】扩展中国剩余定理(EXCRT)/ poj2891 Strange Way to Express Integers
P4777 [模板]扩展中国剩余定理(EXCRT) excrt模板 我们知道,crt无法处理模数不两两互质的情况 然鹅excrt可以 设当前解到第 i 个方程 设$M=\prod_{j=1}^{i-1 ...
- P4777 【模板】扩展中国剩余定理(EXCRT)&& EXCRT
EXCRT 不保证模数互质 \[\begin{cases} x \equiv b_1\ ({\rm mod}\ a_1) \\ x\equiv b_2\ ({\rm mod}\ a_2) \\ ... ...
- [Luogu P4777] 【模板】扩展中国剩余定理(EXCRT) (扩展中国剩余定理)
题面 传送门:洛咕 Solution 真*扩展中国剩余定理模板题.我怎么老是在做模板题啊 但是这题与之前不同的是不得不写龟速乘了. 还有两个重点 我们在求LCM的时候,记得先/gcd再去乘另外那个数, ...
- 扩展中国剩余定理(EXCRT)学习笔记
扩展中国剩余定理(EXCRT)学习笔记 用途 求解同余方程组 \(\begin{cases}x\equiv c_{1}\left( mod\ m_{1}\right) \\ x\equiv c_{2} ...
随机推荐
- html5-css渐变应用小实例,按钮
.but1{ padding: 10px 20px; font-size: 16px; text-shadow: 2px 2px 3px rgba(0,0,0,0.8); bo ...
- Python 7 -- 文件存储数据
上一节总结了一个基本web应用的代码,这一节主要讲用户访问的数据记录在log文件中,并显示在页面上. 这节步骤: 按以下目录建好相应的文件夹及内容 webapp|----vsearch4web.py ...
- 实现私有化(Pimpl) --- QT常见的设计模式
转载自:http://blog.sina.com.cn/s/blog_667102dd0100wxbi.html 一.遇到的问题 1.隐藏实现 我们在给客户端提供接口的时候只希望能暴露它的接口,而隐藏 ...
- 图像处理基础---RGB图 灰度图 索引图 调色板
(1)二进制图 在二进制图中,像素的取值为两个离散数值0或1中的一个,0代表黑色,1代表白色 例 A=[0 0 1;1 1 0; 0 0 1];>> imshow(A,'InitialMa ...
- js中使用0 “” null undefined {}需要注意
注意:在js中0为空(false) ,代表空的还有“”,null ,undefined: 如果做判断if(!上面的四种值):返回均为false console.log(!null);// true c ...
- Makefile依赖关系中的竖线“|”
网上搜索无果,于是自己查看了一下makefile的info文件,其中解释如下: [java] view plain copy print? target : prerequisites [TAB] ...
- Eloquent JavaScript #09# Regular Expressions
索引 Notes js创建正则表达式的两种方式 js正则匹配方式(1) 字符集合 重复匹配 分组(子表达式) js正则匹配方式(2) The Date class 匹配整个字符串 Choice pat ...
- Eloquent JavaScript #05# higher-order functions
索引 Notes 高阶函数 forEach filter map reduce some findIndex 重写课本示例代码 Excercises Flattening Your own loop ...
- Elasticstarch 相关
索引: 在Elasticsearch中存储数据的行为就叫做索引(indexing),不过在索引之前,我们需要明确数据应该存储在哪里. 在Elasticsearch中,文档归属于一种类型(type),而 ...
- 模拟window系统的“回收站”
若要模拟window系统的“回收站”功能,具体的要求如下: 对于列表中的图片,可以通过拖动或单击“删除”的链接,以动画的方式移至“回收站”. 对于“回收站的图片”,可以通过拖动和单击“还原”的链接,以 ...