欧几里德与扩展欧几里德 小讲 【 理解 + 例题 】 更新 ing
来源:互联网 发布:php模拟get请求 编辑:程序博客网 时间:2024/06/04 19:31
欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。(扩展欧几里德将在后续更新、、、)
定理:gcd(a, b) = gcd(b, a mod b) (a > b 且a mod b 不为0) (证明过程可以参见百度百科)
某些巨巨总是会说,数论只会gcd, 这类人,也只能仰望吧、、、
关于gcd 的应用,应该就是需要用到最大公约数的地方吧 - - #,我也不大清楚,只记得以前写过一道什么直线什么的,等等贴出来看看、、
gcd 可以通过迭代,或者是递归的方式来实现,下面我们来看一段实现代码:
// 递归实现, b = 0 时退出int gcd(int a, int b){ if(b == 0) return a; return gcd(b, a % b);}// 迭代实现、、、int gcd(int a, int b){ while(b != 0) { int r = b; b = a % b; a = r; } return a;}
例题:
1. hdu 2503 a/b + c/d 链接http://acm.hdu.edu.cn/showproblem.php?pid=2503
题意就是:给你2个分数,求他们的和,并要求和为最简形式。
#include <stdio.h>#include <algorithm>using namespace std;int gcd(int a, int b){ int t; // 之前傻傻地用min,max 真是逗了、 if(a < b) { t = a; a = b; b = t; } if(a % b == 0) return b; else return gcd(b, a % b);}int main(){int n, a, b, d, k1, k2, k3, k4;scanf("%d", &n);while(n --){ scanf("%d %d %d %d",&k1, &k2, &k3, &k4); a = k1 * k4 + k2 * k3; b = k2 * k4; d = gcd(a, b); printf("%d %d\n", a/d, b/d);}return 0;}
0 0
- 欧几里德与扩展欧几里德 小讲 【 理解 + 例题 】 更新 ing
- KMP小讲 【理解 + 例题】 更新 ing.....
- 欧几里德, 与 扩展欧几里德
- 数位DP 小讲 【 理解 + 例题 】 更新 ing......
- 树状DP 小讲 【 理解 + 例题 】 更新 ing......
- 鸽笼原理 小讲 【 理解 + 例题 】 更新 ing ...
- 快速排序 小讲 - (二)【 理解 + 例题 】 更新 ing...
- 最小生成树 - prim 小讲 【 理解 + 例题 】 更新 ing...
- 网络流 - Edmond-Karp 小讲 【 理解 + 例题 】 更新 ing...
- 二叉排序树(BST) 小讲 【 理解 + 例题 】 更新ing ...
- 二分搜索 小讲 【 理解 + 例题 】 更新ing......
- 逆序数 小讲 【 理解 + 例题 】 更新ing....
- 欧几里德与扩展欧几里德算法
- 欧几里德与扩展欧几里德算法
- 欧几里德与扩展欧几里德算法
- 欧几里德与扩展欧几里德算法
- 欧几里德与扩展欧几里德算法
- 欧几里德与扩展欧几里德算法
- Notification 使用详解(很全)
- 资源记录
- NYOJ-n-1位数
- ci+smarty3版本配置
- nginx配置与调试
- 欧几里德与扩展欧几里德 小讲 【 理解 + 例题 】 更新 ing
- spring mvc文件上传
- 数据结构之堆
- java中怎样用IO流把一个文件全部读取出来
- Linux crontab-自动化的任务
- 读写STM32内部flash读写代码
- ASP网站图片轮播代码
- 并查集findx()
- cloudfoudry中使用uaac管理用户