欧几里得算法及扩展欧几里得
long long gcd (long long a, long long h)
{if (b == 0) return a;return gcd (b , a % b);
}
这里求得的x是一个特解,而不是最后解。
扩展欧几里德的最终目标是求出ax+by=gcd(a,b)的解,(即x,y)。
void e_gcd (long long int a, long long int b, long long int &x, long long int &y)
{long long t;if ( b == 0){x = 1;y = 0;return;}e_gcd (b, a % b, x, y);t = x - a / b * y;x = y;y = t;
}
这个题是要求(n-m)*t+l*k=x-y中的t,x-y是gcd(n-m,l)的倍数。
#include<iostream>
#include<cstdlib>
#include<cstdio>using namespace std;long long int gcd (long long int a,long long int b)
{return b == 0 ? a : gcd(b, a % b);
}
void e_gcd (long long int a, long long int b, long long int &x, long long int &y)
{long long t;if (b == 0){x = 1;y = 0;return;}e_gcd (b, a % b, x, y);t = x - a / b * y;x = y;y = t;
}int main()
{long long int r,t,x,y,m,n,l,res,X,Y;cin>>x>>y>>m>>n>>l;res=gcd(n-m,l);e_gcd(n-m,l,X,Y);if((x-y)%res||m==n){cout<<"Impossible"<<endl;return 0;}l=l/res;X=X*((x-y)/res);X=(X%l+l)%l;cout<<X<<endl;return 0;
}
欧几里得算法及扩展欧几里得相关推荐
- 欧几里得算法(扩展欧几里得、欧拉定理、费马小定理)
问题描述: a 和 b的最大公约数是多少? 古代解法:辗转相除法 迭代过程:例如: {a = 15 和 b = 12 } =>{ a = 12,b = 15 - (15/12)* 12 = ...
- 扩展欧几里得算法_扩展欧几里得递推算法
欧几里得算法 表示 整数 a 与 b 的最大公约数. 若 t = a % b, 则 证明略. 递推版 gcd 算法 gcd 接受变量元组 (a, b) 作为输入,输出最大公约数 (r). 我们很难直接 ...
- AcWing 877. 扩展欧几里得算法(拓展欧几里得模板)
题目链接 https://www.acwing.com/problem/content/879/ 思路 由贝祖定理我们可以得到ax+by=k∗gcd(a,b)ax+by=k*gcd(a,b)ax+by ...
- [模板]欧几里得算法/扩展欧几里得
最大公因数(欧几里得算法) $gcd(a,b)=gcd(b\%a,a)$(不一定需要a<b) $gcd(0,b)=b$ 1 inline int gcd(int a,int b){ 2 retu ...
- 欧几里得算法扩展欧几里得
本文包括: 1.几里德算法 递归实现 2.扩展欧几里德算法 递归实现 -实际上就是把别人总结的,我认为有助于自己理解的内容copy过来,再加上几句自己的理解. 欧几里得算法 欧几里德算法又称辗转相除法 ...
- 逆元+费马小定理+扩展欧几里得
逆元:(即是逆元素)逆元素是指一个可以取消另一给定元素运算的元素. 在一个代数系统(S,*)中,存在单位元素e,如果对S内的元素a存在a^-1 * a = e,则将 a^-1称为a 的左逆元. 同理若 ...
- 欧几里得算法及其扩展
先来看看欧几里得算法: 1 public class Gcd { 2 /** 3 * 欧几里德算法,即辗转相除法 最大公约数 4 */ 5 public static long gcd(long m, ...
- 欧几里得与扩展欧几里得总结
欧几里得 来看看一个常见的\(gcd\)代码 int Gcd(a,b){return (b==0)?a:Gcd(b,a%b); } 入门的一个知识吧,但是你会证明吗? \(emmm\) 好吧我就只是背 ...
- 欧几里得和扩展欧几里得
别人总结的,很详细,http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html 欧几里得算法,就是人们常说的辗转相除法,比较好理 ...
最新文章
- ecshop模板的原理分析
- dedecms 会员网站UID注册名转MID
- Playframework2 标签速记
- python3.4 安装numpy报错_python2.7安装numpy报错:is not a supported wheel on...
- Android之app作为服务器解决跨域问题
- 前端学习(1272):路由的基本概念和说明
- U-Net++粗略解释
- 深入浅出谈CUDA(二)
- 金山云和金山办公均成功上市 雷军揭秘背后原因
- 移动机器人综合性能对比分析
- 2020-08-03 手动编译Qt库(msvc2019版本)
- Proteus:51仿真入门
- python中options类_python命令行参数解析OptionParser类用法实例
- rainmeter 新人使用记录
- java服务器接收coap协议数据_CoAP协议-以Java为例的Californium初步实现
- IT业台风警报(一)——望天
- linux生成表格的后缀,使用XSSFWork创建的xlsx后缀Excel文件无法打开
- 免费的可视化Web报表工具,JimuReport v1.4.4-beta版本发布
- 管理者失败的七大原因
- 博睿孟曦东:致力于提升企业关键业务可靠性与稳定性使其IT质量可视化