扩展欧几里得
文章平均质量分 87
Big_Rui
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
The Balance 扩展欧几里得
题意:给定a,b,c;求a*x+b*y=c;思路:典型的 扩展欧几里得,主要是如何求最小和;a*x+b*y=c,特解x0,y0。通解 x=x0+b/gcd*t ; y=y0-a/gcd*t ;|x|+|y|=|x0+b/gcd*t |+|y0-a/gcd*t |,令a>b(如果不是,交换),因为y的减少大于x的增长,所以当t=y0/(a/gcd)时,和最小。如果不能整除,也是原创 2017-09-03 18:25:50 · 327 阅读 · 0 评论 -
ZOJ3609 Modular Inverse 扩展欧几里德算法
题意:给定a,m,求a=1(mod m)思路:典型的求乘法逆元,但是WA了五次,因为x要是正数,不能是0,坑死我了#include#include#includeusing namespace std;int egcd(int a,int b,int &x,int &y){ if(b==0){ x=1;y=0; return a;原创 2017-09-04 16:36:27 · 343 阅读 · 0 评论 -
hdoj 2669 Romantic 【扩展欧几里得 求解最小非负解】
题意:给定a,b,求想x,y使a*x+b*y=1;思路;扩展欧几里得求乘法逆元,x好求,主要是y,直接y=1-a*x;一开始想到了x=x0+b*t;y=y0-a*t;算t,发现比较麻烦,还是直接算来的方便#include#include#includeusing namespace std;typedef long long ll;ll egcd(ll a,ll b,ll原创 2017-09-04 20:09:51 · 552 阅读 · 0 评论 -
X问题 扩展欧几里得
题意:#include#include#include#includeusing namespace std;typedef long long ll;ll egcd(ll a,ll b,ll &x,ll &y){ if(b==0){ x=1;y=0; return a; } ll d=egcd(b,a%b,y,x原创 2017-09-04 23:47:55 · 395 阅读 · 0 评论 -
ZOJ - 3593 One Person Game 扩展欧几里得 技巧
题意:给定两个点A,B,和a,b;c=a+b。由A走到B,每步可以向左或向右走a,b,c,,步;求最小步数思路:ax+by+cz=B-A ==> a(x+z)+b(y+z)=B-A ==> ax+by=B-A当x0,y0同号时,步数=x0+y0-min(x0,y0)(转化成走c步)=max(x0,y0)当x0,y0异号时,步数=abs(x0)+abs(y0)(无法转化成走c步)正确原创 2017-09-06 09:22:52 · 486 阅读 · 0 评论 -
Strange Way to Express Integers 扩展欧几里得
题意:给定数组数据a1,r1,a2,r2,使得存在x,x%a1=r1,x%a2=r2,求出最小的x,没有输出-1;扩展欧几里得的定义自己去网上搜搜,我这讲一些公式的推导。设 a1*k1+ a2*k2= gcd(a,b); 会求解出特解k1,k2通解:k1'=k1+a2/gcd*t(t是任意整数);k2'=k1-a1/gcd*t(t是任意整数)注意一点:当k1%(原创 2017-09-03 09:36:34 · 366 阅读 · 0 评论
分享