证明:设 a>b。
推理1,显然当 b=0,gcd(a,b)=a。此时 x=1,y=0;//推理1
推理2,a*b!=0 时
设 ax1+by1=gcd(a,b);
bx2+(a mod b)y2=gcd(b,a mod b);
根据朴素的欧几里德原理有 gcd(a,b)=gcd(b,a mod b);
则:ax1+by1=bx2+(a mod b)y2;
即:ax1+by1=bx2+...
分类:
编程语言 时间:
2015-05-14 23:50:21
阅读次数:
177
这是我算法学习标签下的第一篇随笔,首先我想声明,在看了很多博客后,我的想法就是,尽量不去盲目复制别人的东西,一个原因是盲目复制不一定能发现其文章中的错误,二是可以加深自己的理解程度,并且将博客写得通俗易懂,转载别人的东西一定要注明出处。还有我的一个习惯就是,把东西写短一点,所以有可能会将一个本来应在...
分类:
编程语言 时间:
2015-05-14 11:34:01
阅读次数:
111
#include#include#includechar str1[100],str2[100];int len;int cal(char *str1,char *str2){ int ret=0,i; for(i=0;str1[i]&&str2[i];i++) { ...
分类:
编程语言 时间:
2015-05-09 21:59:00
阅读次数:
145
写诗或者写程序的时候,我们经常要跟欧几里得算法打交道。然而有没要考虑到为什么欧几里得算法是有效且高效的,一些偏激(好吧,请允许我用这个带有浓重个人情感色彩的词汇)的计算机科学家认为,除非程序的正确性在数学上得到了完全严格的证实,否则我们不能认为程序是正确的。既然存在即合理,因此下面我就详细得解说一下...
分类:
编程语言 时间:
2015-05-07 20:23:35
阅读次数:
167
设a与b是非零整数,g=gcd(a,b).方程ax+by=g总是有一个整数解(x1,y1) (可利用扩展欧几里得算法解出),则方程的每一个解可由(x1+k*b/g,y1-k*a/g)得到,其中k可为任意整数。证明:先证明ax+by=1的情况(此时设gcd(a,b)=1)。 (1)若(x,y)是(1)...
分类:
其他好文 时间:
2015-04-22 23:57:06
阅读次数:
220
1 #include 2 using namespace std; 3 4 int gcd(int m , int n) 5 { 6 int r; 7 while(n!=0) 8 { 9 r = m%n;10 m = n;11 ...
分类:
编程语言 时间:
2015-04-21 09:26:19
阅读次数:
143
题目链接:Codeforces 492E Vanya and Field
通过拓展欧几里得算法求出每个位置在移动过程中,在x为0时,y的位置。统计相应y坐标最多的即为答案。
#include
#include
#include
using namespace std;
const int maxn = 1e6 + 5;
const int maxm = 1e5 + 5;
typedef...
分类:
其他好文 时间:
2015-04-16 10:21:14
阅读次数:
119
欧几里得算法:用于求两个非负整数a、b的最大公因数(用gcd(a,b)表示)。这里用d表示,假设d一定存在。证明:由题设知d|a,d|b(d|a代表d能整除a,即a mod d=0)设a=kb+r,这里k和r都是整数。则r=a mod b。我们可以让a=n1d,b=n2d。则r=(n1-k*n2)d...
分类:
编程语言 时间:
2015-04-05 09:01:17
阅读次数:
126
辗转相除法可以用来计算两个整数的最大公因数(Dcd)。利用辗转相除法求最大公因数的步骤如下:第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0;第二步:若r0=0,则n为m,n的最大公因数;若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1;第三步:若r1=0,则r1为m,n...
分类:
编程语言 时间:
2015-03-28 23:03:04
阅读次数:
147