裴蜀定理: 对于\(a,b\in N^*, x, y\in Z\),方程\(ax+by=k\)当且仅当\(gcd(a, b)|k\)时有解. 证明: 必要性显然. 充分性:只需证明当\(k=gcd(a, b)\)有解. 设\(s\)为令方程有解的最小\(k\)值,\(gcd(a, b) = d\),首先有\(d|s\). 设$t = \lfloor \frac{a}{s} \rfloor,r = a \bmod s $ 则\(r = a - t * s = a - (ax + by)*t = (…
欧几里得算法 又称辗转相除法 迭代求两数 gcd 的做法 由 (a,b) = (a,ka+b) 的性质:gcd(a,b) = gcd(b,a mod b) int gcd(int a,int b){ if(b==) return a; return gcd(b,a%b); } O(logn) 裴蜀定理: 设 (a,b) = d,则对任意整数 x,y,有 d|(ax+by) 成立: 特别地,一定存在 x,y 满足 ax+by = d 等价的表述:不定方程 ax+by = c(a,b,c 为整数)…
0.前言 相信大家对于欧几里得算法都已经很熟悉了.再学习数论的过程中,我们会用到扩展欧几里得算法(exgcd),大家一定也了解过.这是本蒟蒻在学习扩展欧几里得算法过程中的思考与探索过程. 1.Bézout定理 扩展欧几里得算法利用归纳法,证明了Bézout定理. Bézout定理:对于任意整数 \(a\),\(b\) ,存在一对整数 \(x\),\(y\),满足 \(ax+by=gcd(a,b)\) 在扩展欧几里得的算法中,我们求出 \(x\),\(y\) 的值. 2.证明 2.1 \(gcd\…
我们接着上面的欧几里得算法说 扩展欧几里得算法 扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式\(^①\): ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理).扩展欧几里德常用在求解模线性方程及方程组中. ①:裴蜀定理: 裴蜀定理\((Bezouts identity)\)是代数几何中一个定理,其内容是若设a,b是整数,则存在整数x,y,使得ax+by=gcd(a,b),(a,b)代表最大公因数,则设a,b是不全为零的整数,则存在整数x,y,使…
题目描述 给出 $n$ 个瓶子和无限的水,每个瓶子有一定的容量.每次你可以将一个瓶子装满水,或将A瓶子内的水倒入B瓶子中直到A倒空或B倒满.$m$ 次操作,每次给 $[l,r]$ 内的瓶子容量增加 $x$ ,或询问使用 $[l,r]$ 内瓶子能够凑出的最小体积. 输入 第一行包括两个数字:瓶子数n,事件数m. 第二行包含n个整数,表示每个瓶子的容量vi. 接下来m行,每行先有三个整数fi li ri. 若fi=1表示询问li到ri他最少能倒腾出的汽油量最少是多少? 若fi=2 再读入一个整数x.…
题目描述 给出 $n$ 个瓶子和无限的水,每个瓶子有一定的容量.每次你可以将一个瓶子装满水,或将A瓶子内的水倒入B瓶子中直到A倒空或B倒满.从中选出 $k$ 个瓶子,使得能够通过这 $k$ 个瓶子凑出的最小体积最大.求这个体积. 输入 第1行:2个整数N,K,  第2..N 行:每行1个整数,第i+1 行的整数为Vi 输出 仅1行,一个整数,表示火星人给出燃料的最大值. 样例输入 3 2 3 4 4 样例输出 4 题解 扩展裴蜀定理+STL-map 显然通过容量为 $v_1,v_2,...,v_…
题目描述 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小 输入 第一行给出数字N,代表有N个数 下面一行给出N个数 输出 S的最小值 样例输入 2 4059 -1782 样例输出 99 题解 扩展裴蜀定理 裴蜀定理:二元一次不定方程 $ax+by=c$ 存在整数解的充分必要条件是 $\gcd(a,b)|c$. 扩展裴蜀定理:改成n元一次不定方程,结论依然成立. 证明: $a_1x_1+a_2x_2$ 的取值范围为 $k·\gc…
一.欧几里得算法 名字非常高大上的不一定难,比如欧几里得算法...其实就是求两个正整数a, b的最大公约数(即gcd),亦称辗转相除法 需要先知道一个定理: gcd(a, b) = gcd(b, a mod b) (其中a mod b != 0)  或  b (其中a mod b == 0) 证明: 后半部分呢...是废话,于是只要证明前半部分即可. 不妨设g = gcd(a, b),于是有 a = g * A, b = g * B 且 (A, B) = 1 故gcd(b, a mod b) =…
Euclid算法(gcd) 在学习扩展欧几里得算法之前,当然要复习一下欧几里得算法啦. 众所周知,欧几里得算法又称gcd算法,辗转相除法,可以在\(O(log_2b)\)时间内求解\((a,b)\)(a,b的最大公约数). 其核心内容可以陈述为:\((a,b)=(b,a\%b)\),然后反复迭代该式缩小\(a,b\)规模,直到\(b=0\),得到a为最大公约数. 证明 设两数为\(a\ b(b<a)\),求它们最大公约数的步骤如下:用\(b\)除\(a\),即\(a/b=q-..r\),得\(a…
2018-03-11 17:39:22 一.辗转相除法 在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法.辗转相除法首次出现于欧几里得的<几何原本>(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的<九章算术>.辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数.例如,252和105的最大公约数是21(252 = 21 × 12:105 = 21 × 5):因为252 − 105…