本题要求编写程序,计算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. csu 1356 Catch bfs(vector)

    1356: Catch Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 96  Solved: 40[Submit][Status][Web Board] ...

  2. I/O概述

    同步:同步等待,按照顺序执行,单线程.异步:异步并发,多线程. 阻塞:请求一个操作,如果条件不满足,一直等待需要的条件,直到条件满足.非阻塞:请求一个操作,如果条件不满足,则返回不满足条件的标志信息. ...

  3. UI设计师必备

    网站大全 国外的花瓣--Pinterest • The world’s catalog of ideas 字体海洋--求字体网提供中文和英文字体库下载.识别与预览服务,找字体的好帮手原创设计UI--站 ...

  4. Tomcat中使用commons-io-2.5发生的错误java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils

    关键词:IntelliJ IDEA.Tomcat.commons-io-2.5.jar.java.lang.ClassNotFoundException: org.apache.commons.io. ...

  5. Android 录制视频

    Activity代码: package eoe.demo.Media; import java.io.File; import java.io.IOException; import android. ...

  6. elasticsearch 使用tcp 访问NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{Yk0WjtKbQXqYCJSDFRYlRA}

    默认的 elasticsearch.yml 端口是9200,是给tcp提供的.如果想使用 自带的  TransportClient 需要配置为 tcp 的9300端口.配置方式为: 在/config/ ...

  7. C# winfrom DataGridView用法

    DataGridView列的宽度自动调整,可以使用DataGridView.AutoSizeColumnsMode属性实现. 下面的代码就是列的宽度根据Header和所有单元格的内容自动调整的. // ...

  8. Java学习---多线程的学习

    基础知识 每个正在系统上运行的程序都是一个进程(process).每个进程包含一到多个线程(thread).进程也可能是整个程序或者是部分程序的动态执行. 线程是一组指令的集合,或者是程序的特殊段,它 ...

  9. 解决python3 UnicodeDecodeError: 'gbk' codec can't decode byte

    本来想写个html来玩玩,结果读取文件得时候就BUG了.... 以下代码读取html中无中文没有问题. def handle_request(client): buf = client.recv(10 ...

  10. UNIX crontab自动执行脚本

    crontab 是不会加载环境变量的你手动执行可以是因为登录了oracle用户加载了环境变量,你可以在脚本里添加,echo $ORACLE_HOME  echo $ORACLE_SID 等等试试,看看 ...