本题要求编写程序,计算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
 package com.hone.basical;

 import java.util.Scanner;

 /**
* 原题目:https://www.patest.cn/contests/pat-b-practise/1034
* @author Xia
*
*/
public class basicalLevel1034count{ 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. 有理数四则运算的更多相关文章

  1. PAT 1034 有理数四则运算(20)(代码框架+思路+测试点错误分析)

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

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

    本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只 ...

  3. PAT 1034 有理数四则运算

    https://pintia.cn/problem-sets/994805260223102976/problems/994805287624491008 本题要求编写程序,计算2个有理数的和.差.积 ...

  4. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)

    PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)  http://www.patest.cn/contests/pat-b-practise/1034 ...

  5. PAT(B) 1034 有理数四则运算(Java)

    题目链接:1034 有理数四则运算 (20 point(s)) 题目描述 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数 ...

  6. PAT-乙级-1034. 有理数四则运算(20)

    1034. 有理数四则运算(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求编写程序,计算2个有理 ...

  7. P 1034 有理数四则运算

    转跳点:

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

    本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分 ...

  9. PAT Basic 1034 有理数四则运算(20) [数学问题-分数的四则运算]

    题目 本题要求编写程序,计算2个有理数的和.差.积.商. 输⼊格式: 输⼊在⼀⾏中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分⼦和分⺟全是整型范围内的整数, ...

随机推荐

  1. gRPC的简单Go例子

    gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发 ...

  2. 第N次学习javaIO之后

    io按流分 输入流.输出流 io按类型分(是类型吧) 字节流.字符流 ------------------------------------- 先说说一直以来混淆什么时候用输入流,什么时候用输出流. ...

  3. select实现三级联动

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 关系型数据库——主键&外键的

    一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  其中每个学 ...

  5. 简析 Tomcat 、Nginx 与 Apache 的区别

    简析 Tomcat .Nginx 与 Apache 的区别 本文讲的是简析 Tomcat .Nginx 与Apache的区别, 经常在用 apache 和 tomcat 等这些服务器,可是总感觉还是不 ...

  6. CentOS 7 Apache 多端口部署 Web Apps 指南

    转载自简书,原作者xuyan0,链接https://www.jianshu.com/p/b34c78bf9bf0,如有侵权,请联系删除 导语 Apache web 服务器运行着互联网上超过半数的活跃的 ...

  7. Protocol Buffer学习笔记

    Protocol Buffer Protobuf基础概念 Protobuf是google开发的数据结构描述语言,能够将结构化数据序列化与反序列化,取代json和xml,常用于服务器通信协议.RPC系统 ...

  8. C#中Equals和= =(等于号)的比较(转)

    一.           值类型的比较 对于值类型来说  两者比较的都是”内容”是否相同,即 值 是否一样,很显然此时两者是划等号的. 例: int i = 9; int j = 9; Console ...

  9. leetcode Ch4-Binary Tree & BFS & Divide/Conquer

    一. 1. Lowest Common Ancestor class Solution { public: TreeNode *lowestCommonAncestor(TreeNode *root, ...

  10. 微信开发平台中有个接口是上传多媒体文件,我用的是java 开发的,我怎么样才能在后台实现呢?

    /**      * 文件上传到微信服务器      * @param fileType 文件类型      * @param filePath 文件路径      * @return JSONObj ...