首页 > 其他分享 >扩展中国剩余定理学习笔记

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

时间:2023-05-09 18:14:51浏览次数:39  
标签:剩余 定理 笔记 times rm cases mod ll equiv

给定 \(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}\)

首先我们看一下只有 1 个方程的情况:
$x\equiv b_1\ ({\rm mod}\ a_1)$
那么 \(x\) 就是 \(b_1\bmod{a_1}\)。

然后是 2 个方程的情况:
\(\begin{cases}x\equiv b_1\ ({\rm mod}\ a_1) \\x\equiv b_2\ ({\rm mod}\ a_2)\end{cases}\)
可以改写成 \(\begin{cases}x=b_1+X\times a_1\\x= b_2+Y\times a_2\end{cases}\)。
然后就知道 \(b_1+X\times a_1=b_2+Y\times a_2\)。所以 \(a_1\times X+a_2\times (-Y)=b_2-b_1\)。
这个可以用 exgcd 求。具体方法不赘述。
然后求出 \(X\) 的一个解 \(X_0\),然后就知道 \(X\) 的通解 \(X=X_0+k\times\frac{(b_2-b_1)\times a_2}{\gcd(a_1,a_2)}\)。然后令 \(p=\frac{(b_2-b_1)\times a_2}{\gcd(a_1,a_2)}\),就可以求出 \(X\) 的最小正解 \(X_1=(X_0\bmod p+p)\bmod p\)。此时新的 \(A=\operatorname{lcm}(a_1,a_2)\),\(B=(X_1\times a_1+b_1)\bmod A\)。

然后是多个方程的情况:
每 2 个合并成 1 个,直到只剩下一个同余方程。时间复杂度 \(O(n\log w)\),其中 \(w\) 是值域。

inline ll lcm(ll a,ll b){
	return a*b/__gcd(a,b);
}
inline void exgcd(ll &x,ll &y,ll a,ll b){
	if(!b){x=1;y=0;return;}
	exgcd(y,x,b,a%b);y-=a/b*x;
}
ll n,A,B;
int main(){
	n=rd();A=rd();B=rd();
	for(ll i=1,a,b,x,y;i<n;i++){
		a=rd();b=rd();
		ll g=__gcd(a,A),mod=A/g;
		exgcd(x,y,a,A);
		x=((x*(B-b)/g)%mod+mod)%mod;
		A=lcm(a,A);
		B=(a*x+b)%A;
	}
	printf("%lld",(long long)(B%A));
	return 0;
}

标签:剩余,定理,笔记,times,rm,cases,mod,ll,equiv
From: https://www.cnblogs.com/qwq-qaq-tat/p/17385758.html

相关文章

  • 1.2 空间向量基本定理
    基本知识空间向量基本定理如果三个向量\(\vec{a},\vec{b},\vec{c}\)不共面,那么对空间任一向量\(\vec{p}\),存在一个唯一的有序实数组\(x,y,z\),使\(\vec{p}=x\vec{a}+y\vec{b}+z\vec{c}\).证明存在性设\(\vec{a},\vec{b},\vec{c}\)不共面,过点\(O\)作\(\overrightarrow{O......
  • 大数定律和中心极限定理
    《中心极限定理》由前面我们可以知道:正态分布完全可由它的数学期望和方差所确定 对于随机变量X1,X2.....Xn,他们相互独立,服从同一分布且具有数学期望(均值)E(Xi)=u,方差D(Xi)= σ^2那么∑Xi~N(nu,n σ^2)即Z=(∑Xi-nu)/(√n* σ) ~ N......
  • MySQL笔记之文件和日志
    一、存储文件1、存放位置MySQL数据库会在data目录下,以数据库为名,为每一个数据库建立文件夹,用来存储数据库中的表文件数据。不同的数据库引擎,每个表的扩展名也不一样,例如:MyISAM用“.MYD”作为扩展名,Innodb用“.ibd”等。 2、FRM表结构信息文件无论是哪种存储引擎,创建表之......
  • Spring AOP官方文档学习笔记(四)之Spring AOP的其他知识点
    1.选择哪种AOP(1)使用SpringAOP比使用完整版的AspectJ更方便简单,因为不需要在开发和构建过程中引入AspectJ编译器以及织入器,如果我们只希望通知能够在SpringBean上执行,那么选用SpringAOP就可以了,如果我们希望通知能够在不由Spring所管理的对象上执行,那么就需要使用Aspect......
  • 读书笔记-人月神话
    读人月神话感触较深的是第一章的焦油坑,焦油坑是作者用来形容大型系统开发的一个概念。史前时代,恐龙、猛犸象、剑齿虎这些大型食肉动物碰到焦油坑也是没有办法挣脱的,而且越用力就越容易被沉入坑底。这种场景就像极了大型系统开发的工作。基本上一个大型的编程系统产品的开发成本会......
  • 【笔记】docker安装
    step1、检查系统版本是否符合要求Docker要求CentOS系统的内核版本高于3.10Docker要求CentOS系统的内核版本高于3.10查看你当前的内核版本uname-r查看操作系统版本cat/etc/redhat-releasestep2、卸载旧版本(如果安装过旧版本的话,没有旧版本可以省略此步骤)yumr......
  • Fine-Grained学习笔记(4):条件下界与归约,图论问题的复杂度归约理论
    和P与NP问题一样,Fine-Grained领域中的许多问题也能相互归约,这意味着当这些问题中的任意一个问题的复杂度下界得到了证明或证伪,那么一系列问题的复杂度下界就都能够得到解决.APSP猜想:不存在$O(|V|^{3-\delta})$时间的(对于任意实数边权图都有效的)(确定性的)APSP算法.APSP猜......
  • 同余方程学习笔记
    一、裴蜀定理裴蜀定理(或贝祖定理)得名于法国数学家艾蒂安·裴蜀,说明了对任何整数\(a,b\)和它们的最大公约数\(d\),关于未知数\(x\)和\(y\)的线性不定方程(称为裴蜀等式):若\(a,b\)是整数,且\(\gcd(a,b)=d\),那么对于任意的整数\(x,y,ax+by\)都一定是\(d\)的倍数。特别地,......
  • 笔记本通过HDMI接口扩展显示器,微信/Outlook等界面模糊变清晰的解决办法
    1、笔记本扩展显示器,微信界面显示字体模糊如何解决?解决方案:第一步:鼠标右键打开微信快捷方式,选择‘属性’,找到‘兼容性’,选择‘更改高DPI设置’第二步:高DPI缩放替代:勾选✔‘替代高DPI缩放行为’第三步:点击“确定”。第四步:重新启动微信,微信界面的字体显示清晰了 2、问题......
  • vue中 vuex踩坑笔记-刷新后动态路由不渲染
    在vue中,vuex经常用于存储公共状态,特别是在登录的时候获取token再保存,这个时候如果是做的动态路由,由于vuex的特性在你刷新后会清除你的所有操作的存储。这时候,存储的token和动态路由都会被清掉。如何解决这个问题:1.结合session或者cookie(通常用这个),token保存的时候,除了在vuex中......