文章目录

  • 题目分析
  • 题目链接

题目分析


来源:acwing
加减乘除:
ab+cd=ad+bcbd\frac{a}{b}+\frac{c}{d}=\frac{ad+bc}{bd}ba​+dc​=bdad+bc​

ab−cd=ad−bcbd\frac{a}{b}-\frac{c}{d}=\frac{ad-bc}{bd}ba​−dc​=bdad−bc​

ab×cd=acbd\frac{a}{b}\times\frac{c}{d}=\frac{ac}{bd}ba​×dc​=bdac​

ab÷cd=adbc\frac{a}{b}÷\frac{c}{d}=\frac{ad}{bc}ba​÷dc​=bcad​

AC代码

#include<bits/stdc++.h>
using namespace std;typedef long long LL;//最大公约数
LL gcd(LL a, LL b){return b? gcd(b ,a %b): a;
}//输出函数:
// 如果是负数,输出括号
// 有理数输出最简形式:带分数 = 整数+真分数void print(LL a , LL b){//最大公约数LL d =gcd(a, b);//约分a/= d ,b /= d;//负号放在分子if(b<0) a*=-1, b *= -1;//是不是负数,是的话需要输出括号bool is_minus =  a <0; //如果a<0 则说明是负数if(is_minus) cout<<"(";//是整数if(b ==1 ) cout<< a;//是分数else {//带分数的话,负号在整数部分if(abs(a) >= b)  cout<<a/b<<" ", a= abs(a) % b;//普通真分数的话,负号在分子printf("%lld/%lld",a, b);    }if(is_minus) cout<<")";}void add( LL a, LL b ,LL c ,LL d){print(a, b),cout<<" + " ,print(c, d),cout<<" = ";a = a *d + b*c;b = b*d;print(a,b),cout<<endl;
}void sub( LL a, LL b ,LL c ,LL d){print(a, b),cout<<" - " ,print(c, d),cout<<" = ";a = a *d - b*c;b = b*d;print(a,b),cout<<endl;
}void mul( LL a, LL b ,LL c ,LL d){print(a, b),cout<<" * " ,print(c, d),cout<<" = ";a = a *c;b = b*d;print(a,b),cout<<endl;
}
void div( LL a, LL b ,LL c ,LL d){print(a, b),cout<<" / " ,print(c, d),cout<<" = ";if(!c) cout<<"Inf"<<endl;else{a = a *d ;b = b*c ;print(a,b),cout<<endl;}}
int main(){LL a,b,c,d;scanf("%lld/%lld",&a, &b);scanf("%lld/%lld",&c,&d);add(a,b,c,d);sub(a,b,c,d);mul(a,b,c,d);div(a,b,c,d);}

题目链接

PAT甲级1088 Rational Arithmetic

PAT甲级1088 Rational Arithmetic:[C++题解]分数的加减乘除相关推荐

  1. PAT甲级1081 Rational Sum:[C++题解]分数求和、辗转相除法求最大公约数、long long有一个数据溢出

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析 数据量很小,直接模拟分数加法即可,分数加法如下: ab+cd=ad+bcbd\frac{a}{b}+\frac{c}{d}=\frac ...

  2. PAT甲级1029 Median:[C++题解]贪心、二路归并

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 如果直接排序,时间复杂度是O(nlogn),n=2∗105O(nlogn),\ n=2*10^5O(nlogn), n=2∗105会 ...

  3. PAT甲级1070 Mooncake:[C++题解]贪心

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 对单件从高到低排序. 需要注意的是总需要量d设成double,不要设成int. ac代码 #include<bits/stdc ...

  4. PAT甲级1008 Elevator:[C++题解]模拟

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:统计上升次数.下降次数:停留次数就是n.然后算数即可. ac代码 #include<bits/stdc++.h> usin ...

  5. PAT甲级1077 Kuchiguse:[C++题解]字符串、最长公共后缀

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 读入n个字符串s[n],以s[0]为基础找公共后缀.枚举后缀的长度,内层循环遍历其他字符串,判断是否后缀相等. 使用子串的函数sub ...

  6. PAT甲级1078 Hashing:[C++题解]哈希表、哈希表开放寻址法、二次探测法

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 本题建立hash表是利用只具有正增量的二次探测法来解决冲突, 索引 = 数 % 哈希表的大小 如果映射到同一个索引idx,hash表 ...

  7. PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数

    文章目录 题目分析 题目链接 题目分析 分析:求单源最短路,使用dijkstra()算法. 最短路的条数,和最短路中 人数最多的一条,输出最多人数. 本题点比较少,使用邻接矩阵d[N][N]来存. a ...

  8. PAT甲级1032 Sharing :[C++题解]链表

    文章目录 题目分析 题目链接 题目分析 思路:建立链表,这里使用数组.e [ ] 表示当前的数值,ne[ ]表示next指针. 求单词的公共后缀,就是求两个链表从头结点开始第一个公共的结点. 先遍历第 ...

  9. PAT甲级1010 Radix :[C++题解]进制位、秦九韶算法、二分(PAT通过率最低的一道题0.11)

    文章目录 题目分析 题目链接 题目分析 分析: 本题思路分两步. 第一步:先把给出数值和进制的数,暂定为N1,转换成10进制,即为target. 第二步: 判断一下N2在多少进制下是等于target的 ...

最新文章

  1. DroidPilot 发布微信公众帐号啦~
  2. 3dmax挤出制作窗花_给想学3dmax,又不知如何快速入手的你 新手学习3dmax的建议...
  3. php管理员登录文件,快速的事情,只有管理员,PHP才能访问文件
  4. 16进制颜色透明_PPT | 如何快速提取图片颜色之人生太卷
  5. QM课程02-外部功能
  6. 如何跨越线程调用窗体控件?(1)
  7. 【收藏干货】axios配置大全
  8. 双标准线等角圆锥投影转换_青学堂--花花的地理课堂之地图投影知多少
  9. 【入门必备】Java数据结构详解
  10. jar包里面文件修改
  11. 口才训练方法——速读法、背诵法
  12. 仿微信拼多多实训笔记
  13. 华为HG8240F光猫破解
  14. [arduino]红外接收测试工装
  15. 推荐给你三个知识星球助你选对人生
  16. ST_Geometry
  17. 我在国企做软件开发这4年。。
  18. 有关计算机软件的心得1500,plc心得体会1500字
  19. 参考文献格式,依据 GB/T 7714-2015
  20. 64位系统魔兽服务器不兼容,win10系统64位系统无法玩魔兽的具体技巧

热门文章

  1. 简单爬虫,查博客浏览量
  2. 移动端开发碰到一个坑
  3. 白书P61 - 点集配对问题
  4. Autodesk Infrastructure Map Server 2014的开发文档在哪里?
  5. “SQL Server does not allow remote connections”错误的解决
  6. foxpro被什么软件取代_MATLAB可以被取代么?可以被什么软件取代?
  7. 用反向传导进行分子动力学模拟并比较NN二甲基苯胺,N甲基苯胺,苯胺,硝基苯的定位效应
  8. CNN 与 LSTM 模型复杂度分析
  9. python和docker交互_jupyter notebook 连接服务器docker中python环境
  10. 【Paper】2021_Optimal Distributed Leader-following Consensus of Linear Multi-agent Systems: A Dynamic