PAT 1034 有理数四则运算
https://pintia.cn/problem-sets/994805260223102976/problems/994805287624491008
本题要求编写程序,计算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
代码:
#include <bits/stdc++.h>
using namespace std; long long int gcd(long long int x,long long int y) {
long long int z = x % y;
while(z)
{
x = y;
y = z;
z = x % y;
}
return y;
} void out(long long int x,long long int y) {
if(y < 0) {
y = y * (-1);
x = x * (-1);
}
if(x > 0) {
if(y == 1) printf("%lld", x);
else {
if(x % y == 0) printf("%lld", x / y);
else {
if(x < y) printf("%lld/%lld", x / gcd(x, y), y / gcd(x, y));
else printf("%lld %lld/%lld", x / y, (x % y) / gcd(x % y, y), y / gcd(x % y, y));
}
}
}
else if(x == 0) printf("0");
else {
if(y == 1) printf("(%lld)", x);
else {
if(x % y == 0) printf("(%lld)", x / y);
else {
if(abs(x) < y) printf("(%lld/%lld)", x / abs(gcd(x, y)), y / abs(gcd(x, y)));
else printf("(%lld %lld/%lld)", x / y, abs(x) % y/gcd(abs(x) % y, y), y / gcd(abs(x) % y, y));
}
}
}
} void add(long long int a1, long long int b1, long long int a2, long long int b2) {
out(a1, b1);
printf(" + ");
out(a2, b2);
printf(" = ");
long long int a3 = a1 * b2 + a2 * b1;
long long int b3 = b1 * b2;
out(a3, b3);
printf("\n");
} void subtract(long long int a1, long long int b1, long long int a2, long long int b2) {
out(a1, b1);
printf(" - ");
out(a2, b2);
printf(" = ");
long long int a3 = a1 * b2 - a2 * b1;
long long int b3 = b1 * b2;
out(a3, b3);
printf("\n");
} void multiplication(long long int a1, long long int b1, long long int a2, long long int b2) {
out(a1, b1);
printf(" * ");
out(a2, b2);
printf(" = ");
long long int a3 = a1 * a2;
long long int b3 = b1 * b2;
out(a3, b3);
printf("\n");
} void division(long long int a1, long long int b1, long long int a2, long long int b2) {
out(a1, b1);
printf(" / ");
out(a2, b2);
printf(" = ");
if(a2 * b2 == 0) {
printf("Inf");
return ;
}
long long int a3 = a1 * b2;
long long int b3 = a2 * b1;
out(a3, b3);
printf("\n");
} int main() {
long long int a, b, c, d;
scanf("%lld/%lld %lld/%lld", &a, &b, &c, &d);
add(a, b, c, d);
subtract(a, b, c, d);
multiplication(a, b, c, d);
division(a, b, c, d);
return 0;
}
PAT 1034 有理数四则运算的更多相关文章
- PAT 1034 有理数四则运算(20)(代码框架+思路+测试点错误分析)
1034 有理数四则运算(20)(20 分)提问 本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的 ...
- PAT——1034. 有理数四则运算
本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分 ...
- PAT 1034. 有理数四则运算(20)
本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只 ...
- PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)
PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20) http://www.patest.cn/contests/pat-b-practise/1034 ...
- PAT(B) 1034 有理数四则运算(Java)
题目链接:1034 有理数四则运算 (20 point(s)) 题目描述 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数 ...
- PAT-乙级-1034. 有理数四则运算(20)
1034. 有理数四则运算(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求编写程序,计算2个有理 ...
- P 1034 有理数四则运算
转跳点:
- PAT乙级1034. 有理数四则运算(20)
本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分 ...
- PAT Basic 1034 有理数四则运算(20) [数学问题-分数的四则运算]
题目 本题要求编写程序,计算2个有理数的和.差.积.商. 输⼊格式: 输⼊在⼀⾏中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分⼦和分⺟全是整型范围内的整数, ...
随机推荐
- TCP/IP协议、HTTP协议
一.序: TCP/IP协议是程序开发的基础知识,我们都知道它可以实现不同计算机之间的通信,它是什么意思?怎么实现通信的? 二.TCP/IP协议: (1)协议:约定 (2)tcp/ip:tcp是传输控制 ...
- 【转载】COM 组件设计与应用(十二)——错误与异常处理
原文:http://vckbase.com/index.php/wv/1238.html 一.前言 程序设计中,错误处理必不可少,而且通常要占用很大的篇幅.本回书着落在 COM 中的错误(异常)的处理 ...
- 【CJOJ2433】陌上花开 CDQ分治
[CJOJ2433]陌上花开 CDQ呲嘚秋分治 WA果然呲嘚秋分治跑得比树套树还快!!!(md理论复杂度不是一样的吗) 但树套树不知道比呲嘚秋高到哪里去辣装X用 Orz hzwer 第一维sort,第 ...
- C#简单的四位纯数字验证码
验证码练手,整型.四位验证码 大体意思就是:四位纯数字验证,只要验证不成功就无限验证 刚开始在纠结怎么让整个过程循环起来,什么循环放到最外层,其实就是一个循环,看来自己的循环练习的还是不够多,不够灵活 ...
- WinForm 捕获系统关机、重启、注销事件
Public Class App Public Shared Sub Main() ' 关联事件 AddHandler Microsoft.Win32.SystemEvents.SessionEndi ...
- 【Unity Shader】(九) ------ 高级纹理之渲染纹理及镜子与玻璃效果的实现
笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题. [Unity Shader](三) ----- ...
- python快速入门——进入数据挖掘你该有的基础知识
这篇文章是用来总结python中重要的语法,通过这些了解你可以快速了解一段python代码的含义 Python 的基础语法来带你快速入门 Python 语言.如果你想对 Python 有全面的了解请关 ...
- bootstrap switch样式修改与多列等间距布局
先以一张图开启今天的随笔 今天实习遇到了switch按钮,小姐姐说用插件bootstrap switch来写,我第一次用这个插件,首先在引入方面就遇到了很多坑,先来总结一下bootstrap swit ...
- 【python 3.6】类:访问属性及调用方法
>>> class price(): //定义1个类,用于计算价格 def __init__(self,name,danjia): //初始化方法,定义商品名称和单价 self.na ...
- 快速部署 Kubeadm 1.13 集群(ETCD)
软件环境清单 kubeadm.x86_64 Version :1.13.1-0 kubelet.x86_64 Version : 1.13-1-0 kubectl.x86_64 Version : ...