算法总结之欧几里德算法1.欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。 其计算原理依赖于下面的定理: gcd(a,b)=gcd(b,amodb)(a>b且amodb不为0)代码实现:1 int gcd(int a,int b)2 {3 return ...
分类:
其他好文 时间:
2014-07-29 10:29:16
阅读次数:
231
题目:http://poj.org/problem?id=2115
题意:对于C的for(i=A ; i!=B ;i +=C)循环语句,问在k位存储系统中循环几次才会结束。若在有限次内结束,则输出循环次数。否则输出死循环。
思路:这道题是一个扩展欧几里德算法的拓展,求单变元模线性方程 即:Cx=(B-A)(mod 2^k)
扩展欧几里得算法和单变元模线性方程(传送门) + 比较详细的博...
分类:
其他好文 时间:
2014-07-27 11:31:23
阅读次数:
199
A/B
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2017 Accepted Submission(s): 1469
Problem Description
要求(A/B)%9973,但由于A很大,我们只给出n...
分类:
其他好文 时间:
2014-07-26 15:28:02
阅读次数:
168
Description
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面...
分类:
其他好文 时间:
2014-07-26 02:02:56
阅读次数:
230
学长口中恶意到裸题,我就只能呵呵了。主要运用一次运用扩展欧几里德算法,列举学霸教我的一个例子(6x+12y = 6的解为x =1,y = 0;所以6x1+12y1=12的解为x1/2 = x,y2/2 = y);除此之外还要在impossible的时候注意判定。#includeusing names...
分类:
其他好文 时间:
2014-07-23 12:36:46
阅读次数:
233
欧几里得
欧几里德算法
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。
基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。
第一种证明:
a可以表示成a = kb + r,则r = a mod b
假设d是a,b的一个公约数,则有
d|a, d|b,而r = ...
分类:
其他好文 时间:
2014-07-22 23:52:47
阅读次数:
344
描述
欧几里德算法
别名:辗转相除法
用途:计算两个正整数a,b的最大公约数
欧几里德拓展算法
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足等式:
ax+by=gcd(a,b)=d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。
代码
C++ 欧几里德LL gcd (LL a, LL b) {
ret...
分类:
其他好文 时间:
2014-07-03 16:20:26
阅读次数:
198
CSDN链接两个自然数的积等于这两个数的最大公约数与最小公倍数的积。求最大公约数的方法:1、辗转相除法:辗转相除法又称为欧几里德算法其计算原理依赖于下面的定理:定理:gcd(a,b)
= gcd(b,a mod b) (a>b 且a mod b 不为0)当b==0时,gcd(a,b)中的a即为最大公...
分类:
其他好文 时间:
2014-05-26 11:19:49
阅读次数:
263
uva 10104 Euclid Problem (数论-扩展欧几里德)
题目大意:
已知 A 和 B , 问你 A*X+B*Y=GCD(A,B)的 X,Y解。
解题思路:
非常裸的拓展欧几里德算法。
拓展欧几里德算法证明过程:
因为 B*X1+A%B*Y1=GCD(B,A%B) =GCD(A,B)=A*X+B*Y
所以 B*X1+(A-A/B*B)*Y1=A*X+B*Y
A*Y1+B*(X1-A/B*Y1)=A*X+B*Y
于是: X=Y1,Y=(X1-A/B*Y1)
因此,得出( A*...
分类:
其他好文 时间:
2014-05-26 05:53:55
阅读次数:
297
题目:Modified LCS
为过此题去仔细研究了下扩展欧几里德算法,领悟了一些精华。
模板为:
void gcd(ll a, ll b, ll& d, ll& x, ll& y)
{
if(!b) {d = a; x = 1; y = 0;}
else{ gcd(b, a%b, d, y, x); y -= x*(a/b);}
}
这里算出来的x,y是对于方...
分类:
其他好文 时间:
2014-05-23 00:26:20
阅读次数:
377