PAT-A-1081. Rational Sum (20)
来源:互联网 发布:购物类网站数据库设计 编辑:程序博客网 时间:2024/06/06 03:51
1081. Rational Sum (20)
Given N rational numbers in the form "numerator/denominator", you are supposed to calculate their sum.
Input Specification:
Each input file contains one test case. Each case starts with a positive integer N (<=100), followed in the next line N rational numbers "a1/b1 a2/b2 ..." where all the numerators and denominators are in the range of "long int". If there is a negative number, then the sign must appear in front of the numerator.
Output Specification:
For each test case, output the sum in the simplest form "integer numerator/denominator" where "integer" is the integer part of the sum, "numerator" < "denominator", and the numerator and the denominator have no common factor. You must output only the fractional part if the integer part is 0.
Sample Input 1:52/5 4/15 1/30 -2/60 8/3Sample Output 1:
3 1/3Sample Input 2:
24/3 2/3Sample Output 2:
2Sample Input 3:
31/3 -1/6 1/8Sample Output 3:
7/24
#include<iostream>#include<cstdio>#include<math.h>#include<stdio.h>using namespace std;typedef long long LL;struct Fraction{ LL up; LL down;};int gcd(LL a, LL b){ if (b == 0) return a; else return gcd(b, a%b);}Fraction reduction(Fraction ans){ if (ans.down < 0) { ans.up = -ans.up; ans.down = -ans.down; } if (ans.up == 0) ans.down = 1; else { int d = gcd(abs(ans.up), abs(ans.down)); ans.up = ans.up / d; ans.down = ans.down / d; } return ans;}void show(Fraction ans){ if (ans.down == 1) cout << ans.up; else if (abs(ans.up) > ans.down) cout << ans.up / ans.down << " " << abs(ans.up) % ans.down << "/" << ans.down << endl; else cout << ans.up << "/" << ans.down << endl;}Fraction add(Fraction f1, Fraction f2){ Fraction ans; ans.up = f1.up*f2.down + f2.up*f1.down; ans.down = f1.down*f2.down; return reduction(ans);}int main(){ int n; Fraction sum, temp; sum.up = 0; sum.down = 1; cin >> n; for (int i = 0; i < n; i++) { scanf("%lld/%lld", &temp.up, &temp.down); sum = add(sum, temp); } show(sum); system("pause"); return 0;}
- PAT A 1081. Rational Sum (20)
- PAT-A 1081. Rational Sum (20)
- PAT-A-1081. Rational Sum (20)
- PAT-A 1081.Rational Sum
- PAT 1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)
- PAT 1081. Rational Sum(20)
- 【PAT】1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)
- 【PAT】1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)
- 1081. Rational Sum (20) PAT
- PAT 1081. Rational Sum
- 【PAT】1081. Rational Sum
- PAT--1081. Rational Sum
- ZJU-PAT 1081. Rational Sum (20)
- 程序员,这12个问题让经理比你痛苦多了
- WordPress新主题Tint Pro(Tinection重构版)无域名限制主题[更新至2.0.6]
- json for modern c++的使用
- HDOJ--2163 Palindromes
- 面试21之检查一颗二叉树是否为二叉查找树
- PAT-A-1081. Rational Sum (20)
- Apache2.4.23本地访问正常但局域网无法访问 httpd.conf设置
- hdu 5703 Desert
- JMeter学习笔记3-如何创建第一个JMeter测试用例
- 反射机制 有什么用
- 4412驱动-key 按键驱动
- 腾讯2017实习生面试(三轮)
- HDU 1013 Digital Roots 数字根 字符串处理基础题
- GitHub导入项目到Eclipse