1034 有理数四则运算 (20 分)
本题要求编写程序,计算 2 个有理数的和、差、积、商。
输入格式:

输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。
输出格式:

分别在 4 行中按照 有理数1 运算符 有理数2 = 结果 的格式顺序输出 2 个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式 k a/b,其中 k 是整数部分,a/b 是最简分数部分;若为负数,则须加括号;若除法分母为 0,则输出 Inf。题目保证正确的输出中没有超过整型范围的整数。
输入样例 1:

2/3 -4/2
输出样例 1:

2/3 + (-2) = (-1 1/3)
2/3 - (-2) = 2 2/3
2/3 * (-2) = (-1 1/3)
2/3 / (-2) = (-1/3)
输入样例 2:

5/3 0/6
输出样例 2:

1 2/3 + 0 = 1 2/3
1 2/3 - 0 = 1 2/3
1 2/3 * 0 = 0
1 2/3 / 0 = Inf

#include <iostream>
#include <cmath>
using namespace std;
long long a, b, c, d;
long long gcd(long long t1, long long t2) {return t2 == 0 ? t1 : gcd(t2, t1 % t2);
}
void func(long long m, long long n) {if (m * n == 0) {printf("%s", n == 0 ? "Inf" : "0");return ;}bool flag = ((m < 0 && n > 0) || (m > 0 && n < 0));m = abs(m); n = abs(n);long long x = m / n;printf("%s", flag ? "(-" : "");if (x != 0) printf("%lld", x);if (m % n == 0) {if(flag) printf(")");return ;}if (x != 0) printf(" ");m = m - x * n;long long t = gcd(m, n);m = m / t; n = n / t;printf("%lld/%lld%s", m, n, flag ? ")" : "");
}
int main() {scanf("%lld/%lld %lld/%lld", &a, &b, &c, &d);func(a, b); printf(" + "); func(c, d); printf(" = "); func(a * d + b * c, b * d); printf("\n");func(a, b); printf(" - "); func(c, d); printf(" = "); func(a * d - b * c, b * d); printf("\n");func(a, b); printf(" * "); func(c, d); printf(" = "); func(a * c, b * d); printf("\n");func(a, b); printf(" / "); func(c, d); printf(" = "); func(a * d, b * c);return 0;
}

C++学习之路 | PTA乙级—— 1034 有理数四则运算 (20 分)(精简)相关推荐

  1. C++学习之路 | PTA乙级—— 1084 外观数列 (20 分)(精简)

    1084 外观数列 (20 分) 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, - 它从不等于 1 的数字 d 开始,序列的第 n ...

  2. C++学习之路 | PTA乙级—— 1082 射击比赛 (20 分)(精简)

    1082 射击比赛 (20 分) 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我 ...

  3. C++学习之路 | PTA乙级—— 1068 万绿丛中一点红 (20 分)(精简)

    1068 万绿丛中一点红 (20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点 ...

  4. C++学习之路 | PTA乙级—— 1063 计算谱半径 (20 分)(精简)

    1063 计算谱半径 (20 分) 在数学中,矩阵的"谱半径"是指其特征值的模集合的上确界.换言之,对于给定的 n 个复数空间的特征值 { a ​1 ​​ +b ​1 ​​ i,⋯ ...

  5. C++学习之路 | PTA乙级—— 1057 数零壹 (20 分)(精简)

    1057 数零壹 (20 分) 给定一串长度不超过 10 ​5 ​​ 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N ...

  6. C++学习之路 | PTA乙级—— 1048 数字加密 (20 分)(精简)

    1048 数字加密 (20 分) 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 ...

  7. C++学习之路 | PTA乙级—— 1047 编程团体赛 (20 分)(精简)

    1047 编程团体赛 (20 分) 编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写程序找出冠军队 ...

  8. C++学习之路 | PTA乙级—— 1043 输出PATest (20 分)(精简)

    1043 输出PATest (20 分) 给定一个长度不超过 10 ​4 ​​ 的.仅由英文字母构成的字符串.请将字符重新调整顺序,按 PATestPATest- 这样的顺序输出,并忽略其它字符.当然 ...

  9. C++学习之路 | PTA乙级—— 1042 字符统计 (20 分)(精简)

    1042 字符统计 (20 分) 请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过 1000 的字符串.字符串由 ASCII 码表中任意可见字符及空 ...

最新文章

  1. HDU 1090 A+B for Input-Output Practice (II)
  2. 我在兰亭这三年之跳出率升高门
  3. 妨碍你成为CCIE的10个不良习惯
  4. 嵌入式linux编译环境搭建,嵌入式Linux开发环境搭建
  5. python自然语言处理.词性标注
  6. python批量下载验证码,用来做验证码处理
  7. bzoj 3687: 简单题
  8. spark代码连接hive_Spark SQL入门到实战之(7)spark连接hive(spark-shell和eclipse两种方式)...
  9. 【MM模块】Subcontracting 委外加工(外包)—2
  10. 特性,物料特性,批次特性(转自SAPNow)
  11. How to resolve empty table CRMATAB issue in ERP gt_crmtab[]
  12. .NET Core 3.0及ASP.NET Core 3.0 前瞻
  13. 用台球杆击球,这个击球力道能传递到10米之外的球上吗?
  14. 与计算机硬件系统紧密相关的程序设计语言是,与计算机硬件系统紧密相关的程序设计语言是...
  15. linux/ubuntu下安装java开发环境
  16. java压缩图片maven_java – 在maven构建中集成yahoo smush.it以进行图像压缩
  17. 88个word基本使用技巧大全,提升工作效率
  18. Visual studio系统找不到指定文件的解决办法
  19. P2672 [NOIP2015 普及组] 推销员
  20. 爬虫摸索中~~(PS:小小爬虫,何惧哉?且到明日,再看今朝。)

热门文章

  1. 论文浅尝 - ICLR2020 | Abductive Commonsense Reasoning
  2. 服务器部署docker
  3. 超级好用的使用python批量更新MYsql,速度从一万条需要一天变道一万条需要10分钟左右
  4. 最新任务型对话数据集大全
  5. python下载网上的文件
  6. Mac上的抓包工具Charles
  7. Linux - which xxx - 查找执行的命令所在的路径
  8. 最近发包给朋友,搞定软件小活儿、解决小功能模块的感受
  9. Snap Shots 出了新东西
  10. linux的基础知识——raise函数,abort函数和定时函数