Recursive: int gcd(int a, int b) { return b ? gcd(b, a%b) : a; } Iterative: int gcd(int a, int b) { while (b) { int tmp = b; b = a%b; a = tmp; } retur ...
分类:
编程语言 时间:
2016-06-26 09:09:15
阅读次数:
177
题意:给出一个数m,让我们找到第k个与m互质的数。 方法:这题有两种方法,一种是欧拉函数+容斥原理,但代码量较大,另一种办法是欧几里德算法,比较容易理解,但是效率很低。 我这里使用欧几里德算法,欧几里德算法又名辗转相除法,原先单纯的用于求最大公约数,这里也算是一个小小的拓展应用,这个题利用的欧几里德 ...
分类:
移动开发 时间:
2016-06-06 20:29:37
阅读次数:
232
欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数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 ...
分类:
编程语言 时间:
2016-06-01 23:14:24
阅读次数:
267
6月1日 1.复习: 欧几里德算法和扩展欧几里德算法 Eratosthenes筛法 2.学习: 模线性方程组 除法取模(乘法逆元) 置换,Burnside引理,Polya定理 费马小定理 3.做题: 1004: [HNOI2008]Cards 1004: [HNOI2008]Cards ...
分类:
其他好文 时间:
2016-06-01 19:30:55
阅读次数:
225
【题目大意】 求与n互质的第k个数。 【思路】 先求出小于k且与n互质的数,再利用gcd(bt+a,b)=gcd(a,b)的性质求解,效率低。枚举与n互质的数的效率是O(nlogn),求解第k个数的效率是O(1)。 据说0ms做法是容斥+二分? ...
分类:
移动开发 时间:
2016-05-31 23:51:34
阅读次数:
316
题意:两只青蛙在同一个纬度上跳跃,给定每个青蛙的开始坐标和每秒跳几个单位,纬度长为L,求它们相遇的最短时间。 析:开始,一看只有一组数据,就想模拟一下,觉得应该不会超时,但是不幸的是TLE了,我知道这肯定是一个数学题,不过刚开始没想到是扩展欧几里德,后来才发现这个可以转化为这个算法。 我们假设刚开始 ...
分类:
编程语言 时间:
2016-05-22 21:21:20
阅读次数:
146
问题:求解 s1 + v1*t = s2 + v2*t - k*m (v1<v2) 已知:s1, s2, v1, v2, m 求解该式子的算法我们称为扩展欧几里德算法。 该算法分为两个部分: (1) 判定是否存在解 对于形如"Ax+By=C"的式子,其存在解的条件为C为A和B最大公约数的整数倍。 我 ...
分类:
其他好文 时间:
2016-05-10 09:56:34
阅读次数:
166
扩展欧几里德算法 要是 a*x + b*y = gcd(a,b) ,则一定存在整数对(x0 , y0)使其有解 则 x = x0 + (b/gcd)*t , y = y0 - (a/gcd)*t 是不定方程的通解 因为 a*x + b*y = gcd(a , b); 又因为 gcd(a , b) = ...
分类:
其他好文 时间:
2016-05-04 22:26:10
阅读次数:
143
欧几里德算法 转载:http://blog.sina.com.cn/u/1885661061 原文章地址:http://blog.sina.com.cn/s/blog_7064e7850100yeu1.html 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。gcd函数就是用来求(a ...
分类:
编程语言 时间:
2016-05-04 10:16:36
阅读次数:
243
证明略。在此只要求指导exgcd,并且会使用。 欧几里德算法:现在有a=xb+y,其中a,b,x,y为整数,那么可以得到:gcd(a,b)=gcd(b,a%b)。 代码实现: 扩展欧几里德算法: 对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在无数组整 应用 ...
分类:
其他好文 时间:
2016-03-24 16:03:12
阅读次数:
106