本人菜鸟一枚,上午在看书的时候突然看到了求最大公约数的一个例题,突然就想到以前好像看过一个欧几里得算法,故又上网仔细找了一下欧几里得算法的原理。可能是本人时间长没看算法,脑子都生锈了。看了几个讲解欧几里得算法的文章,大都只给公式,然后说了一大堆因为、、、、在我还没看懂的时候,突然来了个所以、、、然后...
分类:
其他好文 时间:
2014-08-01 13:25:31
阅读次数:
199
双调欧几里得
DP
Tour
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 3581
Accepted: 1596
Description
John Doe, a skilled pilot, enjoys tra...
分类:
其他好文 时间:
2014-08-01 02:26:50
阅读次数:
256
欧几里得- -要分N种情况- -#include#includeusing namespace std;int gcd(int x,int y){if (y==0) return x;return gcd(y,x%y);}struct node{ int x,y; friend ...
分类:
其他好文 时间:
2014-07-31 16:18:27
阅读次数:
156
之前已经完成了大整数的表示、绝对值的比较大小、取负值、加减法运算、乘法运算以及除法和余数运算。具体见我的主页前三篇博客(自己动手写Java 系列 )。
这篇博客添加求大整数GCD、扩展欧几里得算法和求Mod逆的算法。...
分类:
编程语言 时间:
2014-07-29 15:06:48
阅读次数:
399
青蛙的约会
Time Limit: 1000MS
Memory Limit: 10000K
Total Submissions: 89206
Accepted: 15926
Description
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到...
分类:
其他好文 时间:
2014-07-29 15:04:21
阅读次数:
223
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。
基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。
递归代码:
__int64 gcd(__int64 a,__int64 b)
{
return b==0?a:gcd(b,a%b);
}
扩展欧几里得
基本...
分类:
其他好文 时间:
2014-07-29 15:00:38
阅读次数:
431
链接:poj 1061
解题思路:扩展欧几里德应用:求方程Ax+By=C的一组解(x0,y0)。
设青蛙跳t次相遇,由题意可得方程:
x+mt=y+nt+CL
--> x-y=(n-m)t+CL 且 (x-y),(n-m),L已知.就是求满足方程的最小正整数解t。
定理:设a,b,c为任意整数。若方程ax+by=c的一组整数解为(x0...
分类:
其他好文 时间:
2014-07-29 14:55:11
阅读次数:
173
先做出两个函数的图像,然后求|x|+|y|的最小值。|x|+|y|=|x0+b/d *t |+|y0-a/d *t| 这个关于t的函数的最小值应该在t零点附近(在斜率大的那条折线的零点附近,可以观察出来)。以下三种情况中,函数最小值都应该出现在B点附近。/*对于不定整数方程xa+yb=c,若 c m...
分类:
其他好文 时间:
2014-07-27 22:07:59
阅读次数:
321
题目: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
题目来源:http://vjudge.net/problem/viewProblem.action?id=19592扩展欧几里得方程: ax+by=gcd(a,b)一定有解 把a=floor(x/k);b=ceil(x/k);floor,ceil分别为向下取余和向上取余。 ...
分类:
其他好文 时间:
2014-07-27 09:49:22
阅读次数:
297