PAT_1081. Rational Sum(辗转相除法)
来源:互联网 发布:阿里云cdn怎么使用 编辑:程序博客网 时间:2024/06/06 03:40
#include <iostream>using namespace std;//辗转相除法,求a和b的最大公约数long long int gcd(int a,int b){if(b==0)return a;elsereturn gcd(b,a%b);}int main(){int N;long long int a1=0,b1=1,a2,b2,maxGys;scanf("%d",&N);for(int i=0;i<N;i++){scanf("%lld/%lld",&a2,&b2);maxGys=gcd(a2,b2);a2/=maxGys;b2/=maxGys;a1=a1*b2+a2*b1;b1=b1*b2;maxGys=gcd(a1,b1);a1/=maxGys;b1/=maxGys;}if(a1>b1&&b1!=1)printf("%lld %lld/%lld",a1/b1,a1%b1,b1);else if(a1%b1==0)printf("%lld",a1);else printf("%lld/%lld",a1,b1);}
本题主要考察辗转相除法求最大公约数,摘自网上的解释:
用到辗转相除法求最大公约数 被除数÷除数=商……余数;
如果余数是0,那么此时的被除数是最大公约数;
否则 被除数=除数;除数=余数,继续
int gcd(int b1, int b2){ return b2==0 ? b1 : gcd(b2, b1%b2);}
此外只要注意每次加一个分式之前先对其进行约分,加完之后也对和进行约分即可。
阅读全文
0 0
- PAT_1081. Rational Sum(辗转相除法)
- PAT (Advanced Level) 1081. Rational Sum (20) 分数求和,辗转相除法求gcd
- 最大公约数(辗转相除法)
- 最大公约数(辗转相除法)
- 最大公约数(辗转相除法)
- 辗转相除法(最大公约数)
- 辗转相除法求最大公约数(最小公倍数)
- C++计算最大公约数(辗转相除法)
- 辗转相除法(欧几里得算法)示意图
- 求最大公约数(辗转相除法)
- C++计算最大公约数(辗转相除法)
- 最大公约数欧几里德算法(辗转相除法)
- 欧几里得算法(辗转相除法)
- 辗转相除法(欧几里得算法)
- 欧几里得算法(辗转相除法)
- c++解最大公约数(辗转相除法)
- 辗转相除法(欧几里德算法)
- 最大公约数(gcd)辗转相除法
- 版本管理工具Git(3)VS2013下如何使用gi
- 美赛数模论文之摘要写作
- 基于《Linux内核设计与实现》笔记概述------从内核出发
- sizeof用法
- Socket网络编程和HTTP网络应用编程的比较
- PAT_1081. Rational Sum(辗转相除法)
- 用C#一步步写串口通信
- Codeforces 466D Increase Sequence(dp+组合数学)
- 擅长排列的小明
- Oracle之唯一性约束(UNIQUEConstraint)用法详解
- mysql 常用cache
- 统一开户前置
- 美赛数模论文之优缺点写作
- SpringBoot之拦截器对数据库的访问