本题要求编写程序,计算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
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String[] input = in.nextLine().split("[\\s/]");in.close();long a1 = Integer.parseInt(input[0]);long b1 = Integer.parseInt(input[1]);long a2 = Integer.parseInt(input[2]);long b2 = Integer.parseInt(input[3]);if (b1 != 0 && b2 != 0) {add(a1, b1, a2, b2);minus(a1, b1, a2, b2);mutilply(a1, b1, a2, b2);divide(a1, b1, a2, b2);}}public static void tackle(long a, long b) {if (a == 0) {System.out.print(0);return;}boolean isMinus = a > 0 ? false : true;if (isMinus) {System.out.print("(-");a = -a;}long gcd = getGcd(a, b);a = a / gcd;b = b / gcd;if (a % b == 0) {System.out.print(a / b);} else if (Math.abs(a) > b) {System.out.print(a / b + " " + (a % b) % b + "/" + b);} else if (a == b) {System.out.print(1);} else {System.out.print(a + "/" + b);}if (isMinus) {System.out.print(")");}}public static void divide(long a1, long b1, long a2, long b2) {tackle(a1, b1);System.out.print(" / ");tackle(a2, b2);System.out.print(" = ");if (a2 == 0) {System.out.print("Inf");} else if (a2 < 0) {tackle(-1 * a1 * b2, -1 * a2 * b1);} else {tackle(a1 * b2, a2 * b1);}}public static void mutilply(long a1, long b1, long a2, long b2) {tackle(a1, b1);System.out.print(" * ");tackle(a2, b2);System.out.print(" = ");tackle(a1 * a2, b1 * b2);System.out.println();}public static void minus(long a1, long b1, long a2, long b2) {tackle(a1, b1);System.out.print(" - ");tackle(a2, b2);System.out.print(" = ");tackle(a1 * b2 - a2 * b1, b1 * b2);System.out.println();}public static void add(long a1, long b1, long a2, long b2) {tackle(a1, b1);System.out.print(" + ");tackle(a2, b2);System.out.print(" = ");tackle(a1 * b2 + a2 * b1, b1 * b2);System.out.println();}public static long getGcd(long a, long b) {while (a % b != 0) {long temp = a % b;a = b;b = temp;}return b;}
}

PAT 乙级 1034. 有理数四则运算(20) Java版相关推荐

  1. Pat乙级 1034 有理数四则运算

    Pat乙级 1034 有理数四则运算 思路 代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/99480528762 ...

  2. PAT乙级(1034 有理数四则运算)

    PAT乙级 1034 有理数四则运算 题目描述 解题代码 PAT解题所有题目 可看该模块下其他文章 代码涉及c++和c  供大家一起参考学习! 输入格式: 输入在一行中按照 a1/b1 a2/b2 的 ...

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

    1034 有理数四则运算 (20 分) 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是 ...

  4. PAT 乙级 1009. 说反话 (20) Java版

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区 ...

  5. PAT 乙级 1019. 数字黑洞 (20) Java版

    给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞&qu ...

  6. PAT 乙级 1027. 打印沙漏(20) Java版

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...

  7. PAT 乙级 1029. 旧键盘(20) Java版

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的文字.以及实际 ...

  8. PAT 乙级 1042. 字符统计(20) Java版

    请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过1000的字符串.字符串由ASCII码表中任意可见字符及空格组成,至少包含1个英文字母,以回车结束( ...

  9. PAT 乙级 1043. 输出PATest(20) Java版

    给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按"PATestPATest...."这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一 ...

最新文章

  1. python高效开发实战
  2. mtr命令详解诊断网络路由
  3. C#委托的介绍(delegate、Action、Func、predicate)
  4. ABP理论学习之开篇介绍
  5. 一个没有好好的适应本土市场的失败的案例
  6. python 正则表达式应用——缩写词扩充
  7. .Net中DataTable的保存
  8. 个推异常值检测和实战应用
  9. 升级python以及安装anaconda
  10. POJ 1850 Code
  11. .net core3.1 下由Autofac接管IOC
  12. 微软 .NET 俱乐部在线发布会
  13. Delphi7 提示未注册解决解决办法,201-09-05日,亲测有效
  14. 傅里叶变换与Matlab
  15. JDK1.8新特性及常用新特性
  16. twitter无手机号检查_如何检查Twitter帐户是否为Bot
  17. 双亲委派机制以及打破双亲委派机制
  18. 利用开源软件30分钟搭建自己的voip网络电话系统V1.1
  19. python自动化客户端_如何使用Python自动化登录客户端,pywinauto确实很强大
  20. 内存分析工具 MAT 详解

热门文章

  1. Android开发学习之基于ViewPager实现Gallery画廊效果
  2. Ubuntu ibus 输入法之Skype不能输入中文
  3. Java学习系列(十四)Java面向对象之细谈线程、线程通信(上)
  4. [CentOS7]安装tomcat并开启自启动
  5. Linux学习之基础命令
  6. Win10 Redstone再添新技能:深度集成App-V应用虚拟化
  7. dedecms自定义表单提交成功后提示信息修改和跳转链接修改
  8. [Android自定义控件] Android Scroller工具类和GestureDetector的简单用法
  9. ZOJ 1013 Great Equipment(DP)
  10. 一些SharePoint 2007开发的在线课程