PAT (Basic Level)1034. 有理数四则运算

PAT(乙级)1024 有理数四则运算(20) 题目来源:http://www.nowcoder.com/pat/6/problem/4060 题目描述 本题要求编写程序,计算2个有理数的和、差、积、商。 输入描述: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分 母不为0。 输出描述: 分别在4行中按照“有理数1 阅读详情

https://www.patest.cn/contests/pat-b-practise/1034

(刷完这题,Basic Level就清啦~~为什么最后是1034呢,因为这儿有坑啊!)

题目描述:

本题要求编写程序,计算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
真心感觉心灵受到了伤害!说好的不会超过整型范围的,我就认为不会超过int了,可是其实是不会超过long long 委屈(long long也是整型啊~~)。这题有好多细节:1.负数要加括号;2.分子分母要约分;3.分母为负数的分子分母要同乘以-1;4.除数为0的要输出"Inf"。


#include <iostream>
#include <string>
#include <algorithm> 
#include <cmath>
#include <iomanip>
#include <ctype.h>
using namespace std;

struct num
{
	bool sign ;//0-positive, 1-negtive
	long long k;
	long long a;
	long long b;
};

long long gcd(long long a, long long b)
{
    long long n=b;
	long long c=a%b;
	while(c!=0)
	{
	a=b;
	b=c;
	c=a%b;
	}
	return b;
}

num turn(long long a, long long b)
{
	num n;
	if ( a<0) n.sign = 1, a *= -1;
	else n.sign = 0;
	long long g = gcd(a,b);
	a /= g;
	b /= g;	
	n.k = a/b ;
	n.a = a%b ; 
	n.b = b ;
	return n ;
}
void print( num n)
{
	if (n.sign ==1) cout <<"(-" ;
	if (n.k > 0 && n.a > 0) cout << n.k <<' ' << n.a <<'/' << n.b;
	else if (n.k > 0 && n.a==0) cout << n.k;
	else if (n.k == 0 && n.a > 0) cout << n.a << '/' << n.b ;
	else if (n.k == 0 && n.a == 0) cout <<'0' ;
	if (n.sign ==1) cout <<')' ;
}


void compute(long long a1, long long b1, long long a2, long long b2, char k)
{
	num n1 = turn(a1, b1);
	num n2 = turn(a2, b2);

	long long a3 = 0 , b3 = 0;
	bool flag = 0;
	if (k=='+') 
	{
		a3 = a1*b2+a2*b1;
		b3 = b1*b2 ;
	}
	else if ( k=='-')
	{
		a3 = a1*b2-a2*b1;
		b3 = b1*b2 ;
	}
	else if (k=='*')
	{
		a3 = a1*a2;
		b3 = b1*b2;
	}
	else if ( k=='/')
	{
		if (a2==0) flag = 1;
		else {
			a3 = a1*b2;
			b3 = b1*a2;
			if ( b3 < 0){
				b3 *= -1;
				a3 *= -1;
			}
		}
	}
	print(n1);
	printf(" %c ",k);
	print(n2);
	printf(" = ");
	if (flag == 1) printf("Inf");
	else{
		num n3 = turn(a3,b3);
		print(n3);
	}
	printf("\n");
}
int main()
{
	long long a1, b1, a2, b2;
	scanf("%lld/%lld %lld/%lld", &a1, &b1, &a2, &b2);
	
	compute( a1, b1, a2, b2, '+');
	compute( a1, b1, a2, b2, '-');
	compute( a1, b1, a2, b2, '*');
	compute( a1, b1, a2, b2, '/');
	
	return 0 ;
}



1034 有理数四则运算【PAT (Basic Level) Practice (中文)】 阅读详情

相关推荐

有理数四则运算

数据结构试验题目有理数四则运算C语言实现

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

1034 有理数四则运算 (20 分) 本题要求编写程序,计算 2 个有理数的和、差、积、商。 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。 输出格式: 分别在 4 行中按照 有理数1 运算符 有理数2 = 结果 的格式顺序输出 2 个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式 k a/b,其中 k 是整数部分,a/b 是最简分数部分;若为负数,则须加括号;若除法分母

Eighteen 537

使用HFSS仿真分支波导耦合器

本文介绍了分支波导耦合器的HFSS仿真设计过程。首先给出了器件关键参数(t=0.365mm,l=1.600mm等),详细说明了建模步骤:包括创建中心分支、设置变量参数、镜像复制两侧分支、矩形波导端口设计等操作。重点阐述了激励端口设置方法,包括四个端口的积分线绘制,以及求解频率设定。最后展示了S参数、幅度平衡度和相位差等关键性能指标的仿真结果提取方法。整个设计过程体现了HFSS在微波器件仿真中的参数化建模和结果分析能力。

shao666888的博客 180

PAT 乙级 1034  有理数四则运算

1034 有理数四则运算 (20 point(s)) 本题要求编写程序,计算 2 个有理数的和、差、积、商。 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。 输出格式: 分别在 4 行中按照 有理数1 运算符 有理数2 = 结果 的格式顺序输出 2 个有理数的和、差、积、商。...

漫浸天空的雨色的备忘录~ 1595

Jetpack Compose Navigation实战:从基础到高级导航模式

本文全面解析Jetpack Compose Navigation在Android开发中的应用,从基础导航实现到高级模式(如单任务/单顶模式),涵盖参数传递、嵌套导航、深层链接等核心功能。通过实战代码示例展示如何优化导航性能,并与ViewModel、Hilt等架构组件整合,为开发者提供高效的Compose导航解决方案。

pz890123456的博客 373

从DIY桌面CNC到工业机器人:手把手教你用LinuxCNC搭建自己的第一台数控系统(基于Xenomai实时补丁)

本文详细介绍了如何使用LinuxCNC和Xenomai实时补丁搭建高性价比的数控系统,从硬件选型到实时系统构建,再到HAL硬件抽象层实战和G代码加工,手把手教你打造从DIY桌面CNC到工业机器人的完整解决方案。

weixin_28727975的博客 288

PAT乙级 有理数四则运算(c++)

✨难点在于 1、输出格式要考虑全面,尤其是有负号的时候 2、当进行分数除法时,第二个数的 分子分母的正负号要交换一下。下面就是针对于这种情况的一个用例。 3、求最大公约数,最小公倍数,固定代码 ✨把加法的输出格式 弄好之后,其他三种就好做了 #include<cmath> using namespace std; int split(string s){ for(int i=0;...

zzzbeauty的博客 380

Unraid小白必看:5分钟搞定OpenWrt软路由安装(附iStoreOS配置技巧)

本文为Unraid新手提供了一份详尽的OpenWrt软路由安装与配置指南。通过虚拟机技术,在Unraid系统上快速部署基于iStoreOS的软路由,详细讲解了旁路由与主路由两种模式的网络配置、性能优化技巧及常见故障排查方法,帮助用户充分利用闲置硬件,打造高性能、可定制的家庭网络中枢。

wine的专栏 486

PAT (Basic Level) Practice 1034 有理数四则运算

PAT刷题记录分享 - PAT1034

KaiYingLi的博客 305

LoRa正点原子模块组网步骤

按照我上一篇的博客和视频演示,相信大家一定都可实现了lora模块点对点的通信了。那我们来进行一个比较有高难度的设计吧! 使用多个loRa模块去完成一个组网设计: 在这之前一定要配置模块信息为定点传输 AT+TMODDE要等于1奥 第一步分析通讯协议: 点对点通讯是在透明传输的条件下,地址和信道都是一样的,直接发送接受数据。 组网呢我们利用是: 定向传输就是 A、B的地址、信道不同 假如A是要想B发送信息就用函数来下面: int b[5]...

weixin_43205178的博客 4082

【STM32】BLDC驱动&控制开发笔记 | 07_SPI通信测试 - STM32F407用SPI配置DRV8323驱动芯片

使用STM32F407的SPI通信功能配置DRV8323S驱动芯片的详细过程说明。

这里是 F菌的进阶之路。 6290

[PAT Basic Level]1034.有理数四则运算

题目分析: 这道题到目前为止,应该是编写的最麻烦的一个题了,实在没想到什么比较好的思路,写完了之后在网上也找了一圈,找了一个写的我觉得最好的,思路也差不多,不过实现起来,别人的代码还是简洁了很多,但是我感觉自己的代码看起来相对可能好理解一些?自恋一下。不过把人家的代码贴在后面做一个比较吧,现在自己写的代码肯定还是非常粗糙的,日子还长,希望能早些进步向诸位大神们靠近。 首先强调几个重要的需要注意的地...

weixin_44452361的博客 183

QT实现OPCUA服务端客户端(附完整源码)

QT实现OPCUA服务端客户端(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1821

【PAT Basic Level】1034 有理数四则运算

目录题目分析代码 专栏:PAT乙级刷题笔记 题目 本题要求编写程序,计算 2 个有理数的和、差、积、商。 输入格式 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。。 输出格式 分别在 4 行中按照 有理数1 运算符 有理数2 = 结果 的格式顺序输出 2 个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式 k a/b,其中 k 是整数部分,a/b 是最简分数部分;若为负数,则须

qq_44574887的博客 267

开源项目evo2安装教程

Evo 2 是一种先进的 DNA 语言模型,用于长上下文建模和设计。Evo 2 使用 StripedHyena 2 架构在单核苷酸分辨率下对 DNA 序列进行建模,上下文长度可达 100 万碱基对。Evo 2 使用 Savanna 进行预训练,并在 OpenGenome2 数据集上进行自回归训练,该数据集包含来自所有生命领域的 8.8 万亿个标记。

猿小白的博客 927

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

PAT Basic Level 1034 有理数四则运算 解题思路及AC代码

有理数的四则运算代码化,实现起来需要注意的点还是蛮多的

thexiaosi的博客 262

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

PAT (Basic Level) Practice 1034 有理数四则运算

                                        1034 有理数四则运算 本题要求编写程序,计算 2 个有理数的和、差、积、商。 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。 输出格式: 分别在 4 行中按照 有理数1 运算符 有理数2 = ...

Dunk.Wan 224

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

PAT basic-level 1034 有理数四则运算 笔记

1034. 有理数四则运算(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求编写程序,计算2个有理数的和、差、积、商。 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不

Triumphs的博客 476

PAT (Basic Level) Practice 1034 有理数四则运算 (20分)

1034 有理数四则运算 (20 分) 本题要求编写程序,计算 2 个有理数的和、差、积、商。 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。 输出格式: 分别在 4 行中按照 有理数1 运算符 有理数2 = 结果 的格式顺序输出 2 个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式 k a/b,其中 k 是整数部分,a/b 是最简分数部分;若为负数,则须加括号;若除法分母

a3612999a的博客 239

PAT (Basic Level) 1034 有理数四则运算(模拟)

题目链接:点击查看 题目大意:模拟有理数的四则运算 题目分析:这个题真的考验代码实现能力,我模拟了好一会,终于是把样例过掉了,然后交了一发WA了两个测试点,一下子想起来如果直接乘的话会爆int,全部改成longlong后又过了一个测试点,最后那个测试点我也不知道为什么,对于每个分数必须先化简才能继续操作,不然可能会在某个地方爆掉longlong吧,原理不明 写这种题的时候一定要保证思路清晰,...

Falcon的博客 466

【PAT (Basic Level) Practice】——【分数的四则运算】1034 有理数四则运算

文章目录一【题目难度】二【题目编号】三【题目描述】四【题目示例】五【解题思路】六【最终得分】七【代码实现】八【提交结果】 一【题目难度】 乙级 二【题目编号】 1034 有理数四则运算 (20 分) 三【题目描述】 本题要求编写程序,计算 2 个有理数的和、差、积、商。 四【题目示例】 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。 输出格式: 分别在 4 行中按照 有理数1

IronmanJay 255

PAT (Basic Level) Practice-1034 有理数四则运算

本题要求编写程序,计算 2 个有理数的和、差、积、商。

weixin_53895027的博客 337

PAT(basic level) 1034 有理数四则运算(20)

本题要求编写程序,计算2个有理数的和、差、积、商。 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。 输出格式: 分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整

RRR_mx的博客 337

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

1034. 有理数四则运算(20) 本题要求编写程序,计算2个有理数的和、差、积、商。 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。 输出格式: 分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和、差、积、商。注意

Weaton is Coding 690
上一篇: PAT (Basic Level)1046. 划拳
下一篇: Redhat6.5离线配置Zabbix,含自定义Zabbix监控项
sipprince
博客等级 码龄14年 19粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值