乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。
问题分析
题设给定两个有理数, 要求输出这两个有理数的和、差、积、商。
如果只是这样, 则问题很简单, 但是题设要求输出的每个有理数必须是最简形式.
所以本题的一个重点是如何将有理数转为题设要求的有理数.
将有理数转为最简形式
- 如果分母是0
- 非法值. 题设规定这种情况输出Inf.
- 如果分子是分母的倍数
- 整数部分为 a / b
- 分子为 0
- 分母为 b (虽然这种情况分子分母都不输出, 但是分母为b可以用来与分母为0的情况进行区分)
- 如果分子不是分母的倍数
- 求分子分母的最小公倍数 max_factor
- 化简分子分母: a = a / max_factor; b = b / max_factor;
- 整数部分为 a / b
- 分子为 a % b
- 分母为 b
有理数的加减乘除
对于有理数 a1/b1, a2/b2,
两数之和 = (a1 * b2 + a2 * b1) / (b1 * b2)
两数之差 = (a1 * b2 - a2 * b1) / (b1 * b2)
两数之积 = (a1 * a2) /