1. 最大子序列和的问题; 2. 算法时间复杂度为O(logN)的典型问题: 2.1 对分查找(binary search):时间复杂度(< logN) 2.2 两个整数最大公约数求解(欧几里德算法):时间复杂度(< 2logN) 2.3 幂运算:时间复杂度(<= 2logN... ...
分类:
编程语言 时间:
2017-09-20 19:40:33
阅读次数:
238
本题题意:求两个数的最小公倍数. 代码如下: 很简单的一个欧几里德算法求出最大公约数,然后用两数乘积除以最大公约数就是结果。 ...
分类:
其他好文 时间:
2017-08-19 21:10:48
阅读次数:
149
扩展欧几里德算法 谁是欧几里德?自己百度去 先介绍什么叫做欧几里德算法 有两个数 a b,现在,我们要求 a b 的最大公约数,怎么求?枚举他们的因子?不现实,当 a b 很大的时候,枚举显得那么的naïve ,那怎么做? 欧几里德有个十分又用的定理: gcd(a, b) = gcd(b , a%b ...
分类:
编程语言 时间:
2017-08-19 11:14:26
阅读次数:
287
百度百科: 欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。 证明: r = a mod b, a = b * k + r; => r = a - b * k; d|a && d|b = ...
分类:
编程语言 时间:
2017-08-13 12:18:36
阅读次数:
136
简单介绍: 欧几里德算法。又称辗转相除法,是求解最大公约数的算法。 定理: 欧几里德算法的理论支撑为GCD递归定理。以下介绍这个定理。 GCD递归定理: 对随意非负整数a和随意正整数b。gcd(a , b) = gcd(b , a%b) 代码: 由上述定理。我们能够直接得出gcd函数的代码: int ...
分类:
编程语言 时间:
2017-08-11 13:37:33
阅读次数:
149
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。 递归版算法: 递归优化版: 迭代版: 扩展欧几里德算法 基本算法:对于不完全为 0 的非负整数 a ...
分类:
编程语言 时间:
2017-07-16 00:49:26
阅读次数:
353
转自:http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html 基本状态:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。 证明: ...
分类:
编程语言 时间:
2017-07-05 13:20:09
阅读次数:
251
欧几里德算法又称为辗转相除法,用于计算两个非负整数的最大公因数。其伪代码如下: gcd(a, b) //要求保证传入的a>=b if(b == 0) return a return gcd(b, a % b) 首先说明这个函数能返回a与b的最大公因数。但是我们不从代码到原理,我们要从原理返回代码。( ...
分类:
编程语言 时间:
2017-07-04 01:06:08
阅读次数:
437
欧几里得& 拓展欧几里得(Euclid & Extend-Euclid) 欧几里得算法(Euclid) 背景: 欧几里德算法又称辗转相除法。用于计算两个正整数a。b的最大公约数。 ——百度百科 代码: 递推的代码是相当的简洁: int gcd(int a,int b) { return b == 0 ...
分类:
编程语言 时间:
2017-07-03 16:14:02
阅读次数:
173
【算法】欧几里德算法 #include<cstdio> int gcd(int a,int b) {return b==0?a:gcd(b,a%b);} int main() { int a,b; scanf("%d%d",&a,&b); printf("%d",gcd(a,b)); return ...
分类:
其他好文 时间:
2017-05-26 19:42:07
阅读次数:
156