1034 有理数四则运算 (20分)
 

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

输入格式:

输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。

输出格式:

分别在 4 行中按照 有理数1 运算符 有理数2 = 结果 的格式顺序输出 2 个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式 k a/b,其中 k 是整数部分,a/b 是最简分数部分;若为负数,则须加括号;若除法分母为 0,则输出 Inf。题目保证正确的输出中没有超过整型范围的整数。

输入样例 1:

  1. 2/3 -4/2
 

输出样例 1:

  1. 2/3 + (-2) = (-1 1/3)
  2. 2/3 - (-2) = 2 2/3
  3. 2/3 * (-2) = (-1 1/3)
  4. 2/3 / (-2) = (-1/3)
 

输入样例 2:

  1. 5/3 0/6
 

输出样例 2:

  1. 1 2/3 + 0 = 1 2/3
  2. 1 2/3 - 0 = 1 2/3
  3. 1 2/3 * 0 = 0
  4. 1 2/3 / 0 = Inf

分析:

本题乍一看不是很难,但是仔细着手开始做会发现有很多的条件判断以及格式判断。干脆直接就利用函数输出,第一次全是定义为int型,结果只对前两个,后两个超时,百度了一下发现某位大佬提到了“浮点错误”,即把所有的int 改为long long 然后全部正确,通过。下面附上代码,可能比较麻烦,还没具体简化。(有时间的时候简化一波)

  1. #include<iostream>
  2. #include<math.h>
  3.  
  4. using namespace std;
  5.  
  6. long long max(long long a,long long b) { //获取最大公约数
  7. return b == ? a : max(b, a % b);
  8. }
  9.  
  10. void zuijian(long long a,long long b)
  11. {
  12. long long k,i;
  13. i=max(abs(a),abs(b));
  14. a/=i;
  15. b/=i;
  16. k=a/b;
  17. a=a%b;
  18. if(k>)
  19. {
  20. if(a!=)
  21. {
  22. printf("%lld %lld/%lld",k,a,b);
  23. }
  24. else
  25. {
  26. printf("%lld",k);
  27. }
  28.  
  29. }
  30. else if(k<)
  31. {
  32. if(a!=)
  33. {
  34. printf("(%lld %lld/%lld)",k,abs(a),abs(b));
  35. }
  36. else
  37. {
  38. printf("(%lld)",k);
  39. }
  40. }
  41. else
  42. {
  43. if(a>)
  44. {
  45. printf("%lld/%lld",a,b);
  46. }
  47. else if(a<)
  48. {
  49. printf("(%lld/%lld)",a,b);
  50. }
  51. else
  52. {
  53. printf("");
  54. }
  55. }
  56. }
  57.  
  58. int main()
  59. {
  60. long long a1,a2,a3,b1,b2,b3,k1,k2,k3;
  61. scanf("%lld/%lld %lld/%lld",&a1,&b1,&a2,&b2);
  62. zuijian(a1,b1);
  63. cout<<" + ";
  64. zuijian(a2,b2);
  65. cout<<" = ";
  66. zuijian(a1*b2+a2*b1,b1*b2);
  67. cout<<endl;
  68. zuijian(a1,b1);
  69. cout<<" - ";
  70. zuijian(a2,b2);
  71. cout<<" = ";
  72. zuijian(a1*b2-a2*b1,b1*b2);
  73. cout<<endl;
  74. zuijian(a1,b1);
  75. cout<<" * ";
  76. zuijian(a2,b2);
  77. cout<<" = ";
  78. zuijian(a1*a2,b1*b2);
  79. cout<<endl;
  80. zuijian(a1,b1);
  81. cout<<" / ";
  82. zuijian (a2,b2);
  83. cout<<" = ";
  84. if(a2==) cout<<"Inf";
  85. else if(a2<) zuijian(-a1*b2,-b1*a2);
  86. else zuijian(a1*b2,b1*a2);
  87. system("pause");
  88. return ;
  89. }

PAT1034 有理数四则运算 (20分)的更多相关文章

  1. 1034 有理数四则运算 (20 分)C语言

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

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

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

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

    1034. 有理数四则运算(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求编写程序,计算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 Basic 1034 有理数四则运算(20) [数学问题-分数的四则运算]

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

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

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

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

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

  8. P 1034 有理数四则运算

    转跳点:

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

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

随机推荐

  1. spring对websocket的集成和使用

    WebSocket是HTML5提出的一个用于通信的协议规范,该协议通过一个握手机制,在客户端和服务端之间建立一个类似于TCP的连接,从而方便客户端和服务端之间的通信. WebSocket协议本质上是一 ...

  2. linux的用户管理、组管理

    用户管理:centos系统是一个多用户系统 用户分为三类: 超级用户(root) 用户id为 0 伪用户 用户id为1-499,虽然存在,但是不能用户登录 普通用户 用户id为500-60000 用户 ...

  3. java读源码 之 list源码分析(LinkedList)

    文章目录 LinkedList: 继承关系分析: 字段分析: 构造函数分析: 方法分析: LinkedList: 继承关系分析: public class LinkedList<E> ex ...

  4. 002_python的in,while else,格式化输出,逻辑运算符,int与bool转换,编码

    数据 1.什么是数据? x=10,10是我们要存储的数据 2.为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3.数据类型 数字 字符串 列表 元组 字典 集合 ...

  5. flink优化总结

    一.高性能Flink SQL优化技巧 1.Group Aggregate优化技巧 开启MicroBatch或MiniBatch(提升吞吐) MicroBatch和MiniBatch都是微批处理,只是微 ...

  6. 1025 PAT Ranking (25分) 思路分析 +满分代码

    题目 Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of ...

  7. 在终端输入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 太大,在项目上传时有些人会删掉 导致我们下载的项目中缺少这个文件 在尝试把自己项目的 ...

  8. Gitlab 修改ldap认证

    1. 备份数据 2. 修改配置 使用自己搭建的openldap 使用用户中心的openldap 说明:base属性执行所有员工,user_filter属性主要用来实现分组功能.上面的配置是只有ldap ...

  9. PAT 1015 Reversible Primes (20分) 谜一般的题目,不就是个进制转换+素数判断

    题目 A reversible prime in any number system is a prime whose "reverse" in that number syste ...

  10. 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 ...