欧几里得算法:
辗转相除法的关键恒等式:gcd(a,b)=gcd(b,a mod b);

边界条件:gcd(a,0)=a;

//最大公约数
int gcd(int a,int b)
{return b==0?a:gcd(b,a%b);} 

公式: 
gcd(a,b)*lcm(a,b) = a*b;
最小公倍数:
lcm(a,b)=a/gcd(a,b)*b;//先除后除 
lcm(a,b)=a*b/gcd(a,b); //错误,a*b可能会溢出

扩展欧几里得算法:

//求整数x和y,使得a*x+b*y=d,且|x|+|y|最小,d=gcd(x,y)
void exgcd(ll a,ll b,ll &d,ll &x,ll &y)
{if(!b) {d=a; x=1; y=0;}else {exgcd(b,a%b,d,y,x);y-=x*(a/b);}
}

给一个不定方程Ax+By+C=0. 这个方程是否存在整数解?

如果存在,就输出一组x和y,否则输出-1

输入

有多组样例,每行三个数字A,B,C

-2×10^9 < A,B,C < 2×10^9

输出

若有解,输出一行x和y,以空格隔开。否则输出-1

样例输入

2 5 3
931480234 -1767614767 -320146190
-1548994394 -1586527767 -1203252104
1906842444 749552572 -1693767003
-1183748658 875864960 -1315510852
200000003 200000001 1

样例输出

6 -3
-98880374013340920 -52107006370101410
-878123061596147680 857348814150663048
-1
-97498198168399474 -131770725522871624
100000000 -100000001

一个二元一次方程如果存在整数解,那么就有多组(x,y)满足方程,用扩展欧几里得定理求出来的(x,y)是确定的

如果  C%gcd(A,B)不等于0,说明方程 Ax + By = C 无整数解。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void exgcd(ll a,ll b,ll &d,ll &x,ll &y)//扩展欧几里得
{if(!b){//若b=0,gcd(a,b)=gcd(a,0)=a;d=a;//a,b的最大公约数x=1;y=0;}else{exgcd(b,a%b,d,y,x);y-=x*(a/b);}
}
int main()
{ll a,b,c;while(scanf("%lld%lld%lld",&a,&b,&c)!=EOF){ll x=0,y=0,d=0;exgcd(a,b,d,x,y);//printf("%d\n",d);if(c%d==0)printf("%lld %lld\n",-x*(c/d),-y*(c/d));//求不定方程Ax+By+C=0的一组整数解//printf("%lld %lld\n",x*(c/d),y*(c/d));//求不定方程Ax+By=c的一组整数解else//不存在整数解printf("-1\n");}return 0;
}

GCD LCM 欧几里得算法 扩展欧几里得算法相关推荐

  1. 欧几里得算法和扩展欧几里得算法——杨子曰数学

    欧几里得算法和扩展欧几里得算法--杨子曰数学 超链接:数学合集 不说废话,咱们直接开始 欧几里得算法 一句话: g c d ( a , b ) = g c d ( b , a m o d b ) gc ...

  2. 欧几里得算法/扩展欧几里得算法

    转载请说明出处:http://blog.csdn.net/leader_one/article/details/75222771 说在前面 出于尊重,简单介绍一下欧几里得(想了解更多自己百度去) 欧几 ...

  3. 密码学基础算法(一)基于整数的欧几里得算法和扩展欧几里得算法

    图片来源: 随便谷歌的一个图片 图片地址: https://jason-chen-1992.weebly.com/uploads/1/0/8/5/108557741/euclidean_3_orig. ...

  4. 欧几里得算法扩展欧几里得算法

    欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b). ...

  5. 欧几里得算法和扩展欧几里得算法(Euclidean_Algorithm and Extended_Euclidean_Algorithm)

    一.基本概念 欧几里得算法:又名辗转相除法,计算两个整数a,b的最大公约数. 扩展欧几里得算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ...

  6. 欧几里得算法和扩展欧几里得算法详解

    欧几里得算法: int gcd(int x,int y){if(y) return gcd(y,x%y);return x; } 扩展欧几里得算法: 先说一个整体思路: 先求Ax+By=gcd(A,B ...

  7. 欧几里得算法和扩展欧几里得算法的简单例子

    欧几里得算法: #include <cstdio> #include <cstdlib>/* * 挑战...p113 */struct point{ //格点int x;int ...

  8. 【原创】更相减损术 stein算法 欧几里得算法 拓展欧几里得算法 扩展欧几里得算法 逆元的计算与筛法 解模线性方程

    欧几里得 说在前面 数论学复习 Part 6. 然后再来一章CRT和组合数,就飞往概率,以此为跳板去向DP. 计划很美啊你. P.S. 这么说来拉格朗日插值可以说是数论学复习的Part 0了啊. 有一 ...

  9. 欧几里得扩展欧几里得算法及相关的数学证明

    //欧几里得算法求最大公约数 int gcd(int m,int n) {int u0=m,u1=n,t;if( u0<u1 )// 保证u0>=u1u0^=u1,u1^=u0,u0^=u ...

最新文章

  1. 所有的中台都是业务中台
  2. prefetch下载SRA 数据
  3. 国际农产品市场谋定特点趋势 对话国际农民丰收节贸易会
  4. NLP分析小说人物关系,找找主人公的真爱。
  5. UITableView的使用及代理方法
  6. C# 使用Timer控件设置时间间隔
  7. 在Brackets中使用jsHint遇到的问题
  8. 华三交换机路由器图标_弱电箱网口不够用,用华三8口千兆交换机搞定
  9. 项目部署服务器 jstl,Springboot集成jsp及部署服务器实现原理
  10. jQuery10种不同动画效果的响应式全屏遮罩层
  11. 怎么监听Android软键盘的打开和关闭
  12. 程序员如何自制酒店 Wi-Fi?
  13. 今天遇到个超郁闷的问题
  14. Prim算法实现最小生成树MST(java)
  15. dat文件导入cad画图步骤_怎么样给CAD文件加密?
  16. PowerBuilder9 爬取酷狗网页版音乐
  17. java水果类用equal重量价格,Java基础练习题 附答案
  18. shal+php,学习笔记---PHP中几种加密算法(MD5,shal,base64_encode等)
  19. 金仓数据库KingbaseES的连接方法
  20. Spring-IOC与AOP是解决什么问题的?

热门文章

  1. javaScriptDay01
  2. SlidingMenu的简单使用
  3. 将内存单元中小写字符改成大写字符
  4. VHDL操作运算符的优先级顺序
  5. View的setOnClickListener的添加方法
  6. html首字母样式,html标签手册
  7. c++代码好玩_Py之pygame:有趣好玩—利用pygame库实现鱼儿自动实时目标跟踪(附完整代码)...
  8. 输变电设备物联网节点设备无线组网协议_U-Link 物联网(工业互联网)服务平台
  9. 江苏c语言二级试题及答案,江苏省计算机二级C语言试题及答案.doc
  10. 已经围上为何不算目_在湖人打球顺风顺水,戴维斯为何还要亏本卖掉洛杉矶豪宅?...