PAT 乙级 1034. 有理数四则运算(20) Java版
本题要求编写程序,计算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版相关推荐
- Pat乙级 1034 有理数四则运算
Pat乙级 1034 有理数四则运算 思路 代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/99480528762 ...
- PAT乙级(1034 有理数四则运算)
PAT乙级 1034 有理数四则运算 题目描述 解题代码 PAT解题所有题目 可看该模块下其他文章 代码涉及c++和c 供大家一起参考学习! 输入格式: 输入在一行中按照 a1/b1 a2/b2 的 ...
- C++学习之路 | PTA乙级—— 1034 有理数四则运算 (20 分)(精简)
1034 有理数四则运算 (20 分) 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是 ...
- PAT 乙级 1009. 说反话 (20) Java版
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区 ...
- PAT 乙级 1019. 数字黑洞 (20) Java版
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞&qu ...
- PAT 乙级 1027. 打印沙漏(20) Java版
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...
- PAT 乙级 1029. 旧键盘(20) Java版
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的文字.以及实际 ...
- PAT 乙级 1042. 字符统计(20) Java版
请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过1000的字符串.字符串由ASCII码表中任意可见字符及空格组成,至少包含1个英文字母,以回车结束( ...
- PAT 乙级 1043. 输出PATest(20) Java版
给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按"PATestPATest...."这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一 ...
最新文章
- python高效开发实战
- mtr命令详解诊断网络路由
- C#委托的介绍(delegate、Action、Func、predicate)
- ABP理论学习之开篇介绍
- 一个没有好好的适应本土市场的失败的案例
- python 正则表达式应用——缩写词扩充
- .Net中DataTable的保存
- 个推异常值检测和实战应用
- 升级python以及安装anaconda
- POJ 1850 Code
- .net core3.1 下由Autofac接管IOC
- 微软 .NET 俱乐部在线发布会
- Delphi7 提示未注册解决解决办法,201-09-05日,亲测有效
- 傅里叶变换与Matlab
- JDK1.8新特性及常用新特性
- twitter无手机号检查_如何检查Twitter帐户是否为Bot
- 双亲委派机制以及打破双亲委派机制
- 利用开源软件30分钟搭建自己的voip网络电话系统V1.1
- python自动化客户端_如何使用Python自动化登录客户端,pywinauto确实很强大
- 内存分析工具 MAT 详解
热门文章
- Android开发学习之基于ViewPager实现Gallery画廊效果
- Ubuntu ibus 输入法之Skype不能输入中文
- Java学习系列(十四)Java面向对象之细谈线程、线程通信(上)
- [CentOS7]安装tomcat并开启自启动
- Linux学习之基础命令
- Win10 Redstone再添新技能:深度集成App-V应用虚拟化
- dedecms自定义表单提交成功后提示信息修改和跳转链接修改
- [Android自定义控件] Android Scroller工具类和GestureDetector的简单用法
- ZOJ 1013 Great Equipment(DP)
- 一些SharePoint 2007开发的在线课程