扩展欧几里德算法
2016-07-19 09:14
260 查看
#include<iostream> #include<cstdio> using namespace std; void gcd(int a,int b,int& d,int& x,int& y); int main() { int a,b; while(~scanf("%d%d",&a,&b)) { int d=0,x=0,y=0; //d为a,b的最大公约数,x,y分别为ax+by=gcd(a,b)的系数,d,x,y的初始值都赋为0即可 gcd(a,b,d,x,y); printf("%d %d %d\n",d,x,y); } } void gcd(int a,int b,int& d,int& x,int& y) { if(!b){d=a,x=1,y=0;} else {gcd(b,a%b,d,y,x),y-=x*(a/b);} }
相关文章推荐
- 【POJ】2369 - Permutations(置换群)
- 面向对象的理解
- java 虚拟机参数配置详解
- 48. Rotate Image
- Execution failed for task ':app:transformClassesWithDexForDebug'和UnsupportedClassVersionError
- spring(九):基于配置的spring aop
- GDB调试,makefile使用,linux相关
- SSH项目开发中表现层和业务逻辑层之间的传值问题
- floodfill算法
- 实习见闻(1)——第一天
- Android中SQLite应用详解
- 解决vs2008无法切换设计视图的问题
- js动态添加事件-事件委托
- mysql备份之xtrabackup
- 杭电1004
- ROS学习之 cpp名字和节点信息
- 代码优化
- Hadoop HDFS概念学习系列之熟练掌握HDFS的Shell访问(十五)(博主推荐)
- MySQL · 特性分析 · 内部临时表
- Java中String类的一些用法 和含义