PAT1034 有理数四则运算 (20分)
本题要求编写程序,计算 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型,结果只对前两个,后两个超时,百度了一下发现某位大佬提到了“浮点错误”,即把所有的int 改为long long 然后全部正确,通过。下面附上代码,可能比较麻烦,还没具体简化。(有时间的时候简化一波)
- #include<iostream>
- #include<math.h>
- using namespace std;
- long long max(long long a,long long b) { //获取最大公约数
- return b == ? a : max(b, a % b);
- }
- void zuijian(long long a,long long b)
- {
- long long k,i;
- i=max(abs(a),abs(b));
- a/=i;
- b/=i;
- k=a/b;
- a=a%b;
- if(k>)
- {
- if(a!=)
- {
- printf("%lld %lld/%lld",k,a,b);
- }
- else
- {
- printf("%lld",k);
- }
- }
- else if(k<)
- {
- if(a!=)
- {
- printf("(%lld %lld/%lld)",k,abs(a),abs(b));
- }
- else
- {
- printf("(%lld)",k);
- }
- }
- else
- {
- if(a>)
- {
- printf("%lld/%lld",a,b);
- }
- else if(a<)
- {
- printf("(%lld/%lld)",a,b);
- }
- else
- {
- printf("");
- }
- }
- }
- int main()
- {
- long long a1,a2,a3,b1,b2,b3,k1,k2,k3;
- scanf("%lld/%lld %lld/%lld",&a1,&b1,&a2,&b2);
- zuijian(a1,b1);
- cout<<" + ";
- zuijian(a2,b2);
- cout<<" = ";
- zuijian(a1*b2+a2*b1,b1*b2);
- cout<<endl;
- zuijian(a1,b1);
- cout<<" - ";
- zuijian(a2,b2);
- cout<<" = ";
- zuijian(a1*b2-a2*b1,b1*b2);
- cout<<endl;
- zuijian(a1,b1);
- cout<<" * ";
- zuijian(a2,b2);
- cout<<" = ";
- zuijian(a1*a2,b1*b2);
- cout<<endl;
- zuijian(a1,b1);
- cout<<" / ";
- zuijian (a2,b2);
- cout<<" = ";
- if(a2==) cout<<"Inf";
- else if(a2<) zuijian(-a1*b2,-b1*a2);
- else zuijian(a1*b2,b1*a2);
- system("pause");
- return ;
- }
PAT1034 有理数四则运算 (20分)的更多相关文章
- 1034 有理数四则运算 (20 分)C语言
题目描述 本题要求编写程序,计算2个有理数的和.差.积.商. 输入描述: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整 ...
- PAT 1034 有理数四则运算(20)(代码框架+思路+测试点错误分析)
1034 有理数四则运算(20)(20 分)提问 本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的 ...
- PAT-乙级-1034. 有理数四则运算(20)
1034. 有理数四则运算(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求编写程序,计算2个有理 ...
- PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)
PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20) http://www.patest.cn/contests/pat-b-practise/1034 ...
- PAT Basic 1034 有理数四则运算(20) [数学问题-分数的四则运算]
题目 本题要求编写程序,计算2个有理数的和.差.积.商. 输⼊格式: 输⼊在⼀⾏中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分⼦和分⺟全是整型范围内的整数, ...
- PAT 1034. 有理数四则运算(20)
本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只 ...
- PAT乙级1034. 有理数四则运算(20)
本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分 ...
- P 1034 有理数四则运算
转跳点:
- PAT(B) 1034 有理数四则运算(Java)
题目链接:1034 有理数四则运算 (20 point(s)) 题目描述 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数 ...
随机推荐
- spring对websocket的集成和使用
WebSocket是HTML5提出的一个用于通信的协议规范,该协议通过一个握手机制,在客户端和服务端之间建立一个类似于TCP的连接,从而方便客户端和服务端之间的通信. WebSocket协议本质上是一 ...
- linux的用户管理、组管理
用户管理:centos系统是一个多用户系统 用户分为三类: 超级用户(root) 用户id为 0 伪用户 用户id为1-499,虽然存在,但是不能用户登录 普通用户 用户id为500-60000 用户 ...
- java读源码 之 list源码分析(LinkedList)
文章目录 LinkedList: 继承关系分析: 字段分析: 构造函数分析: 方法分析: LinkedList: 继承关系分析: public class LinkedList<E> ex ...
- 002_python的in,while else,格式化输出,逻辑运算符,int与bool转换,编码
数据 1.什么是数据? x=10,10是我们要存储的数据 2.为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3.数据类型 数字 字符串 列表 元组 字典 集合 ...
- flink优化总结
一.高性能Flink SQL优化技巧 1.Group Aggregate优化技巧 开启MicroBatch或MiniBatch(提升吞吐) MicroBatch和MiniBatch都是微批处理,只是微 ...
- 1025 PAT Ranking (25分) 思路分析 +满分代码
题目 Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of ...
- 在终端输入npm run serve时出现npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_0613@1.0.0 dev: 错误的解决方法
在vscode终端使用命令 npm run serve 的时候报错 错误原因在于由于文件 node_modules 太大,在项目上传时有些人会删掉 导致我们下载的项目中缺少这个文件 在尝试把自己项目的 ...
- Gitlab 修改ldap认证
1. 备份数据 2. 修改配置 使用自己搭建的openldap 使用用户中心的openldap 说明:base属性执行所有员工,user_filter属性主要用来实现分组功能.上面的配置是只有ldap ...
- PAT 1015 Reversible Primes (20分) 谜一般的题目,不就是个进制转换+素数判断
题目 A reversible prime in any number system is a prime whose "reverse" in that number syste ...
- PAT-1058 A+B in Hogwarts (进制转换)
1058. A+B in Hogwarts If you are a fan of Harry Potter, you would know the world of magic has its ow ...