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

输入格式:

  1. # include<iostream>
  2. # include<algorithm>
  3. # include<stdio.h>
  4. # include<string>
  5. using namespace std;
  6. bool ISint(int a,int b)
  7. {
  8. double c = a*1.0 / b;
  9. if(c - (int)c == )
  10. {
  11. return true;
  12. }
  13. else
  14. {
  15. return false;
  16. }
  17. }
  18. int gcd(int a,int b)//a da
  19. {
  20. int t;
  21. if(a<b)
  22. {
  23. t=a;a=b;b=t;
  24. }
  25.  
  26. if(b==)
  27. {
  28. return ;
  29. }
  30. else
  31. {
  32. while(b!=)
  33. {
  34. t = a % b;
  35. a = b;
  36. b = t;
  37. }
  38. return a;
  39. }
  40. }
  41.  
  42. int gbs(int x,int y)
  43. {
  44. return (x*y)/gcd(x,y);
  45. }
  46.  
  47. void printhe(int he,int gb,int a1,int b1,int a2,int b2)
  48. {
  49. if( ISint(a1,b1) && a1>=)
  50. {
  51. cout<<a1/b1;
  52. }
  53. else if(ISint(a1,b1) && a1< )
  54. {
  55. cout<<"("<<a1/b1<<")";
  56. }
  57. else if(!ISint(a1,b1) && a1>=)
  58. {
  59. int t1 = gcd(a1,b1);
  60. a1 = a1 /t1;
  61. b1 = b1 /t1;
  62. if(a1>b1)
  63. {
  64. int k1=;
  65. while(a1>b1)
  66. {
  67. a1 = a1 - b1;
  68. k1++;
  69. }
  70. cout<<k1<<" "<<a1<<"/"<<b1;
  71. }
  72. else
  73. {
  74. cout<<a1<<"/"<<b1;
  75. }
  76. }
  77. else
  78. {
  79. a1 = -a1;
  80. int t1 = gcd(a1,b1);
  81. a1 = a1 /t1;
  82. b1 = b1 /t1;
  83. if(a1>b1)
  84. {
  85. int k1=;
  86. while(a1>b1)
  87. {
  88. a1 = a1 - b1;
  89. k1++;
  90. }
  91. cout<<"(-"<<k1<<" "<<a1<<"/"<<b1<<")";
  92. }
  93. else
  94. {
  95. cout<<"(-"<<a1<<"/"<<b1<<")";
  96. }
  97.  
  98. }
  99. cout<<" + ";
  100. if( ISint(a2,b2) && a2>=)
  101. {
  102. cout<<a2/b2;
  103. }
  104. else if(ISint(a2,b2) && a2< )
  105. {
  106. cout<<"("<<a2/b2<<")";
  107. }
  108. else if(!ISint(a2,b2) && a2>=)
  109. {
  110. int t2 = gcd(a2,b2);
  111. a2 = a2 /t2;
  112. b2 = b2 /t2;
  113. if(a2>b2)
  114. {
  115. int k2=;
  116. while(a2>b2)
  117. {
  118. a2 = a2 - b2;
  119. k2++;
  120. }
  121. cout<<k2<<" "<<a2<<"/"<<b2;
  122. }
  123. else
  124. {
  125. cout<<a2<<"/"<<b2;
  126. }
  127. }
  128. else
  129. {
  130. a2 = -a2;
  131. int t2 = gcd(a2,b2);
  132. a2 = a2 /t2;
  133. b2 = b2 /t2;
  134. if(a2>b2)
  135. {
  136. int k2=;
  137. while(a2>b2)
  138. {
  139. a2 = a2 - b2;
  140. k2++;
  141. }
  142. cout<<"("<<-k2<<" "<<a2<<"/"<<b2<<")";
  143. }
  144. else
  145. {
  146. cout<<"(-"<<a2<<"/"<<b2<<")";
  147. }
  148.  
  149. }
  150. cout<<" = ";
  151. if(he>=)
  152. {
  153. if(ISint(he,gb))
  154. {
  155. cout<<he;
  156. }
  157. else
  158. {
  159. int t = gcd(he,gb);
  160. he = he /t;
  161. gb = gb /t;
  162. if(he>gb)
  163. {
  164. int k=;
  165. while(he>gb)
  166. {
  167. he = he - gb;
  168. k++;
  169. }
  170. cout<<k<<" "<<he<<"/"<<gb;
  171. }
  172. else
  173. {
  174. cout<<he<<"/"<<gb;
  175. }
  176. }
  177. }
  178. else
  179. {
  180. he = - he;
  181. if(ISint(he,gb))
  182. {
  183. cout<<"(-"<<he/gb<<")";
  184. }
  185. else
  186. {
  187. int t = gcd(he,gb);
  188. he = he /t;
  189. gb = gb /t;
  190. if(he>gb)
  191. {
  192. int k=;
  193. while(he>gb)
  194. {
  195. he = he - gb;
  196. k++;
  197. }
  198. cout<<"("<<-k<<" "<<he<<"/"<<gb<<")";
  199. }
  200. else
  201. {
  202. cout<<"("<<-he<<"/"<<gb<<")";
  203. }
  204. }
  205. }
  206. cout<<endl;
  207. }
  208.  
  209. void printcha(int cha,int gb,int a1,int b1,int a2,int b2)
  210. {
  211. if( ISint(a1,b1) && a1>=)
  212. {
  213. cout<<a1/b1;
  214. }
  215. else if(ISint(a1,b1) && a1< )
  216. {
  217. cout<<"("<<a1/b1<<")";
  218. }
  219. else if(!ISint(a1,b1) && a1>=)
  220. {
  221. int t1 = gcd(a1,b1);
  222. a1 = a1 /t1;
  223. b1 = b1 /t1;
  224. if(a1>b1)
  225. {
  226. int k1=;
  227. while(a1>b1)
  228. {
  229. a1 = a1 - b1;
  230. k1++;
  231. }
  232. cout<<k1<<" "<<a1<<"/"<<b1;
  233. }
  234. else
  235. {
  236. cout<<a1<<"/"<<b1;
  237. }
  238. }
  239. else
  240. {
  241. a1 = -a1;
  242. int t1 = gcd(a1,b1);
  243. a1 = a1 /t1;
  244. b1 = b1 /t1;
  245. if(a1>b1)
  246. {
  247. int k1=;
  248. while(a1>b1)
  249. {
  250. a1 = a1 - b1;
  251. k1++;
  252. }
  253. cout<<"("<<-k1<<" "<<a1<<"/"<<b1<<")";
  254. }
  255. else
  256. {
  257. cout<<"(-"<<a1<<"/"<<b1<<")";
  258. }
  259. }
  260. cout<<" - ";
  261. if( ISint(a2,b2) && a2>=)
  262. {
  263. cout<<a2/b2;
  264. }
  265. else if(ISint(a2,b2) && a2< )
  266. {
  267. cout<<"("<<a2/b2<<")";
  268. }
  269. else if(!ISint(a2,b2) && a2>=)
  270. {
  271. int t2 = gcd(a2,b2);
  272. a2 = a2 /t2;
  273. b2 = b2 /t2;
  274. if(a2>b2)
  275. {
  276. int k2=;
  277. while(a2>b2)
  278. {
  279. a2 = a2 - b2;
  280. k2++;
  281. }
  282. cout<<k2<<" "<<a2<<"/"<<b2;
  283. }
  284. else
  285. {
  286. cout<<a2<<"/"<<b2;
  287. }
  288. }
  289. else
  290. {
  291. a2 = -a2;
  292. int t2 = gcd(a2,b2);
  293. a2 = a2 /t2;
  294. b2 = b2 /t2;
  295. if(a2>b2)
  296. {
  297. int k2=;
  298. while(a2>b2)
  299. {
  300. a2 = a2 - b2;
  301. k2++;
  302. }
  303. cout<<"("<<-k2<<" "<<a2<<"/"<<b2<<")";
  304. }
  305. else
  306. {
  307. cout<<"(-"<<a2<<"/"<<b2<<")";
  308. }
  309. }
  310. cout<<" = ";
  311. if(cha>=)
  312. {
  313. if(ISint(cha,gb))
  314. {
  315. cout<<cha;
  316. }
  317. else
  318. {
  319. int t = gcd(cha,gb);
  320. cha = cha /t;
  321. gb = gb /t;
  322. if(cha>gb)
  323. {
  324. int k=;
  325. while(cha>gb)
  326. {
  327. cha = cha - gb;
  328. k++;
  329. }
  330. cout<<k<<" "<<cha<<"/"<<gb;
  331. }
  332. else
  333. {
  334. cout<<cha<<"/"<<gb;
  335. }
  336. }
  337. }
  338. else
  339. {
  340. cha = - cha;
  341. if(ISint(cha,gb))
  342. {
  343. cout<<"(-"<<cha/gb<<")";
  344. }
  345. else
  346. {
  347. int t = gcd(cha,gb);
  348. cha = cha /t;
  349. gb = gb /t;
  350. if(cha>gb)
  351. {
  352. int k=;
  353. while(cha>gb)
  354. {
  355. cha = cha - gb;
  356. k++;
  357. }
  358. cout<<"("<<-k<<" "<<cha<<"/"<<gb<<")";
  359. }
  360. else
  361. {
  362. cout<<"("<<-cha<<"/"<<gb<<")";
  363. }
  364. }
  365. }
  366. cout<<endl;
  367. }
  368. int main()
  369. {
  370. int a1,a2,b1,b2;
  371. scanf("%d/%d %d/%d",&a1,&b1,&a2,&b2);
  372. int gb,gy,he,cha;
  373. gb = gbs(b1,b2);
  374. he = a1 * gb / b1 + a2 * gb / b2;
  375. cha = a1 * gb / b1 - a2 * gb / b2;
  376. printhe(he,gb,a1,b1,a2,b2);
  377. printcha(cha,gb,a1,b1,a2,b2);
  378. return ;
  379. }

输入在一行中按照“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

PAT1034的更多相关文章

  1. PAT1034;Head of a Gang

    1034. Head of a Gang (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue One wa ...

  2. PAT1034. Head of a Gang ——离散化+并查集

    题意:成员A与成员B通话 ,成员B与成员C通话,则 ABC即为一个团伙,一共有若干个团伙,每个团伙的人数大于2且相互通话时间超过一定值即为黑帮,每个黑帮伙里有一个BOSS,boss是与各个成员打电话最 ...

  3. pat1034. Head of a Gang (30)

    1034. Head of a Gang (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue One wa ...

  4. PAT1034 有理数四则运算 (20分)

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

随机推荐

  1. Codeforces 802I Fake News (hard)

    Codeforces 802I 题意:统计所有不同子串出现次数的平方的和. 想法:建一个SAM,$Ans=\sum (step[i]-step[fa[i]])*right[i]^2$ #include ...

  2. 修改CAS实现控制某个用户在定义的时间内登录次数

    思想: 在数据库增加字段  1.登录次数 2.登录失败时间(类型TimeStamp) 当一个用户进来认证的时候当登录失败的时候更新登录次数 和最后登录失败的时间. 主要是在登录成功或者失败的时候判断时 ...

  3. xtarbackup恢复

    xbstream -x < ynhw-mysql-slave.01.mysql.prod.sg_fullbak_20180326134255.xbstream -C /data/mysql cd ...

  4. 无效的 JSON 基元 解决办法

    在AJAX中进行如下修改: 加入: dataType: "json", 移除: contentType: 'application/json', 然后检查参数名称,类型是否符合后台 ...

  5. PAT (Advanced Level) Practise - 1095. Cars on Campus (30)

    http://www.patest.cn/contests/pat-a-practise/1095 Zhejiang University has 6 campuses and a lot of ga ...

  6. Spring学习记录(三)

    一.AOP的整理总结 aop面向切面编程 横向重复代码,纵向抽取 动态代理 1.通过动态代理可以体现aop思想 2.为什么要哦用动态代理:对目标对象中的方法进行增强 spring aop开发 spri ...

  7. Finders Keepers-freecodecamp算法题目

    Finders Keepers 1.要求 写一个 function,它遍历数组 arr,并返回数组中第一个满足 func 返回值的元素. 举个例子,如果 arr 为 [1, 2, 3],func 为 ...

  8. 在windows server 2008 64位服务器上配置php环境

    1.安装windows2008 R2 46位 安装2008 R2 关键步骤,网上有很多诸如此类的安装介绍.在些南昌网站建设公司百恒网络工程师就不作详细介绍.关键是要选择适合实际应用的部署.    2. ...

  9. 数据存储之使用MongoDB数据库存储数据

    安装MongoDB环境: 1.官网下载:https://www.mongodb.com/download-center#community 2.MongoDB可视化工具compass下载https:/ ...

  10. Java开发学生管理系统

    Java 学生管理系统 使用JDBC了链接本地MySQL 数据库,因此在没有建立好数据库的情况下没法成功运行 (数据库部分, Java界面部分, JDBC部分) 资源下载: http://downlo ...