扩展欧几里得算法及其应用
一、扩展欧几里得算法
扩展欧几里得算法:对于不完全为 0 的非负整数 a,b,若gcd(a,b)表示 a,b 的最大公约数,必然存在整数对x,y ,使得 ax+by = gcd(a,b)。
算法过程:
设 a>b,当 b=0时,gcd(a,b)=a。此时满足ax+by = gcd(a,b)的一组整数解为x=1,y=0;当a*b!=0 时,
设 a*x1+b*...
分类:
其他好文 时间:
2014-08-08 18:14:06
阅读次数:
341
#include #include long long gcd(long long x,long long y){ if(y==0) { return x; } return gcd(y,x%y);}void extended_gcd(long long a,l...
分类:
其他好文 时间:
2014-08-07 09:43:09
阅读次数:
153
#includeint extended_gcd(int a,int b,int &x,int &y){ int r,t; if(!b) { x = 1; y = 0; return a; } r = extended_gcd(...
分类:
其他好文 时间:
2014-08-06 11:44:11
阅读次数:
268
对欧几里德不太熟悉,参考了网上的一些讲解又学习了一下利用扩展欧几里德算法求线性方程的一般过程:a*x + b*y = m令a1 = a/gcd(a,b) b1 = b/gcd(a,b) m1 = m/gcd(a,b)a*x + b*y = m两边同除以m1a*x/m1 + b*y/m1 = m/.....
分类:
其他好文 时间:
2014-07-29 11:58:06
阅读次数:
300
题目: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
A/B
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2017 Accepted Submission(s): 1469
Problem Description
要求(A/B)%9973,但由于A很大,我们只给出n...
分类:
其他好文 时间:
2014-07-26 15:28:02
阅读次数:
168
Description
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面...
分类:
其他好文 时间:
2014-07-26 02:02:56
阅读次数:
230
学长口中恶意到裸题,我就只能呵呵了。主要运用一次运用扩展欧几里德算法,列举学霸教我的一个例子(6x+12y = 6的解为x =1,y = 0;所以6x1+12y1=12的解为x1/2 = x,y2/2 = y);除此之外还要在impossible的时候注意判定。#includeusing names...
分类:
其他好文 时间:
2014-07-23 12:36:46
阅读次数:
233
描述
欧几里德算法
别名:辗转相除法
用途:计算两个正整数a,b的最大公约数
欧几里德拓展算法
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足等式:
ax+by=gcd(a,b)=d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。
代码
C++ 欧几里德LL gcd (LL a, LL b) {
ret...
分类:
其他好文 时间:
2014-07-03 16:20:26
阅读次数:
198
题目:Modified LCS
为过此题去仔细研究了下扩展欧几里德算法,领悟了一些精华。
模板为:
void gcd(ll a, ll b, ll& d, ll& x, ll& y)
{
if(!b) {d = a; x = 1; y = 0;}
else{ gcd(b, a%b, d, y, x); y -= x*(a/b);}
}
这里算出来的x,y是对于方...
分类:
其他好文 时间:
2014-05-23 00:26:20
阅读次数:
377