欧几里得算法以及扩展欧几里得算法(过河noip2005提高组第二题)

欧几里得算法:也被称作辗转相除法

gcd(a,b)=gcd(b,a%b);

终止条件a=gcd b=0;

(gcd为a,b的最大公约数)

扩展欧几里得算法: a 和 b 的最大公约数是 gcd ,一定能够找到这样的 x 和 y ,使得: a*x + b*y = gcd 成立

我们只需要找到特殊解x0,y0;

则通解为 x = x0 + (b/gcd)*t    y = y0 – (a/gcd)*t

那如何求出下一组解呢

仿照欧几里得算法a=b,b=a%b代入。

a%b = a - (a/b)*b(这里的 “/” 指的是整除)可以得到:

gcd = b*x1 + (a-(a/b)*b)*y1

= b*x1 + a*y1 – (a/b)*b*y1

= a*y1 + b*(x1 – a/b*y1)

对比易得      x = y1

y = x1 – a/b*y1

终止为    a*1 + b*0 = gcd即a的系数为1,b的系数为0或者其他值(*0=0)

我们再看过河这个问题 设a=s,b=s+1,ax+by=n a,b的最大公约数为1因为是相邻的自然数

ax+by=n是由ax+by=1(1为最大公约数)de系数*n得到的。

未完待续。

时间: 2024-08-07 04:31:03

欧几里得算法以及扩展欧几里得算法(过河noip2005提高组第二题)的相关文章

vijos p1002——过河(noip2005提高组T2)

描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,……,L(其中L是桥的长度).坐标为0的点表示桥的起点,坐标为L的点表示桥的终点.青蛙从桥的起点开始,不停的向终点方向跳跃.一次跳跃的距离是S到T之间的任意正整数(包括S,T).当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥. 题目给出独木桥的长度L,青蛙跳跃的距离范围

[NOIP2005提高组]过河

题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,--,L(其中L是桥的长度).坐标为0的点表示桥的起点,坐标为L的点表示桥的终点.青蛙从桥的起点开始,不停的向终点方向跳跃.一次跳跃的距离是S到T之间的任意正整数(包括S,T).当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥. 题目给出独木桥的长度L,青蛙跳跃的距离

【水】NOIP2005提高组 谁拿了最多的奖学金

PID16 / 谁拿了最多奖学金 类型:模拟 来源 NOIP2005提高组 题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得: 2) 五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得: 3) 成绩优秀奖,每人2000元,期末平均成绩高于90分(>90)

NOIP2005提高组 && HLG 1219 谁拿了最多奖学金 (好经典的基础题 )

链接: http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1219 Description 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得: 2) 五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成

扩展欧几里得模板(洛谷1082 同余方程NOIP 2012 提高组 第二天 第一题)

题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正整数 x0,即最小正整数解.输入数据保证一定有解. 输入输出样例 输入样例#1: 3 10 输出样例#1: 7 说明 [数据范围] 对于 40%的数据,2 ≤b≤ 1,000: 对于 60%的数据,2 ≤b≤ 50,000,000: 对于 100%的数据,2 ≤a, b≤ 2,000,000,000

欧几里得算法与扩展欧几里得算法_C++

先感谢参考文献:http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html 注:以下讨论的数均为整数 一.欧几里得算法(重点是证明,对后续知识有用) 欧几里得算法,也叫辗转相除,简称 gcd,用于计算两个整数的最大公约数 定义 gcd(a,b) 为整数 a 与 b 的最大公约数 引理:gcd(a,b)=gcd(b,a%b) 证明: 设 r=a%b , c=gcd(a,b) 则 a=xc , b=yc , 其中x , y互质

欧几里得算法与扩展欧几里得算法

欧几里得算法基于这样一个 GCD 递归定理: $gcd(a, b) = gcd(b, a\bmod{b}) $ 证明如下: 假设 $a > b$, $a = kb + r(0 <= r < b)$, 即 $a\bmod{b} = r$. 若有 $d \mid a$ 且 $d \mid b$, 必然有 $d \mid a - kb$, 即 $d \mid r$. 由此得知, $a$ 与 $b$ 的所有公约数必然是 $b$ 与 $r$ 的公约数. 若有 $d \mid r$ 且 $d \mi

noip2005提高组题解

T1.谁拿了最多的奖学金 给出n个学生的信息,分别表示:姓名,期末成绩,班级评议成绩,是否学生干部(Y/N),是否西部学生(Y/N),论文数: 奖学金分为: 1).院士奖学金,每人8000 元,期末平均成绩高于80 分(>80),并且在本学期内发表1 篇或1 篇以上论文的学生均可获得: 2).五四奖学金,每人4000 元,期末平均成绩高于85 分(>85),并且班级评议成绩高于80 分 (>80)的学生均可获得: 3).成绩优秀奖,每人2000 元,期末平均成绩高于90 分(>90

noip2005提高组 题解

水 正经题解 最多的奖学金 https://www.luogu.com.cn/problem/P1051 就水题,但我还是wa了一个点[??] 大概就是排序的时候把“>"换成 "<"就过了,应该是输出时优先输出排前面的[无可奈何] 代码就不贴了 过河 https://www.luogu.com.cn/problem/P1052 这道题状态转移方程很显然. f[i]表示到第i个点经过的最少石子数:f[i]=min(f[i],f[i-j]+a[i]):j取s~t,a[