欧几里得& 拓展欧几里得(Euclid & Extend-Euclid)
欧几里得算法(Euclid)
背景:
欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。
——百度百科
代码:
递推的代码是相当的简洁:
….
分析:
方法说了是辗转相除法,自然没有什么好介绍的了。。
Fresh肯定会觉得这样递归下去会不会爆栈?实际上在这里是不会爆栈的,因为递归的层数是...
分类:
编程语言 时间:
2015-08-16 07:09:01
阅读次数:
158
一、若a与n互素,那么可以用扩展欧几里德和欧拉函数求出a对于n的逆元。
ax≡1(mod n),x为a对于n的逆元。
用欧几里德求逆元x:
//a与n互素,逆元才有解
#include
#include
using namespace std;
typedef long long LL;
void exgcd(LL a,LL b,LL &d,LL &x,LL &y)
{
if(!b)...
分类:
其他好文 时间:
2015-08-15 18:26:34
阅读次数:
97
作用:欧几里德扩展方程是用来求解二元一次线性方程的。ax+by=c
(a、b、c为已知数)
对于给定方程:
ax+by=c,令g=gcd(a,b)
因为a是g的倍数,b也是g的倍数,所以令a=m*g , b=n*g,则:
ax+by=g(m*x+n*y)=c
所得的结果c必然是g的倍数。
当且仅当mx+ny=1时,右边有最小值。而此时mn必定是互质的。
所以我们经常求的最小整数解就...
分类:
其他好文 时间:
2015-08-15 12:05:36
阅读次数:
110
扩展欧几里德非常经典,但是也有时候挺难用的。一些东西一下子想不明白。。
于是来了一个逆天模板。。只要能列出Ax+By=C,就能解出x>=bound的一组解了~
LL exgcd(LL a, LL b, LL &x, LL &y) {
if(b == 0) {
x = 1; y = 0;
return a;
}
LL r = exgcd(b...
分类:
其他好文 时间:
2015-08-15 10:25:48
阅读次数:
115
费马小定理(Fermat Theory)是数论中的一个重要定理,其内容为: 假如p是质数,且Gcd(a,p)=1,那么 a(p-1) ≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。扩展欧几里德算法是用来在已知a, ...
分类:
编程语言 时间:
2015-08-14 11:40:14
阅读次数:
180
欧几里德算法又称辗转相除法,用于计算两个整数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的一个公...
分类:
编程语言 时间:
2015-08-12 18:19:00
阅读次数:
127
题目链接:点击打开链接
题目描述:
给出三个数x1,a,b,然后根据递推公式xi=(axi-1+b)mod10001,计算出了一个长度为2T的数列。然后把T和x1,x3,x5··· x2T-1写到输入文件,x2,x4,x4,···x2T作为输出文件
输入保证T
解题思路:如果知道a,我们就可以通过x1,x3,计算出b。有了x1,a,b我们就可以在O(T)的时间内求的整个序列。如果在...
分类:
编程语言 时间:
2015-08-09 14:10:12
阅读次数:
127
Descriptionwindy有一块矩形土地,被分为 N*M 块 1*1 的小格子。 有的格子含有障碍物。 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离。 如果从格子A不可以走到格子B,就没有距离。 如果格子X和格子Y有公共边,并且X和Y均不含有障碍物,就可以从X走...
分类:
其他好文 时间:
2015-08-05 20:06:15
阅读次数:
123
这个题乍一看跟剩余定理似的,但是它不满足两两互素的条件,所以不能用剩余定理,也是给了一组同余方程,找出一个X满足这些方程,如果找不到的话就输出-1因为它不满足互素的条件,所以两个两个的合并,最后合成一个。题目给定的是M % m1 = r1M % m2 = r2......M % mn = rn只需将...
分类:
其他好文 时间:
2015-08-01 18:48:53
阅读次数:
107
辗转相除法,又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。这种算法,在中国则可以追溯至东汉出现的《九章算术》。设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q....
分类:
其他好文 时间:
2015-07-29 19:27:58
阅读次数:
173