1081. Rational Sum (20)
来源:互联网 发布:淘宝上的6s官换机真相 编辑:程序博客网 时间:2024/06/10 00:15
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
AC代码
#include<iostream>#include<string>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;class rationalCalc {public: long long numberator,denoinator; rationalCalc(long long a,long long b) { numberator =a; denoinator =b; } rationalCalc(); void operator =(rationalCalc); rationalCalc operator +(rationalCalc); string print();};int main() { int n; cin>>n; rationalCalc sum(0,1); string rationalNumA; long long numberatorA,denominatorA; while(n--){ cin>>rationalNumA; sscanf(rationalNumA.c_str(),"%lld/%lld",&numberatorA,&denominatorA); rationalCalc num(numberatorA,denominatorA); sum=sum+num; } printf("%s\n",sum.print().c_str()); return 0;}long long Max_GongYue(long long a,long long b) { return b == 0 ? a : Max_GongYue(b, a%b);}long long Min_GoneBei(long long a,long long b) { return a*b/Max_GongYue(a,b);}rationalCalc rationalCalc::operator+(rationalCalc target) { long long numberat,denoina,minGongbei; minGongbei = Min_GoneBei(denoinator,target.denoinator); denoina = minGongbei; numberat = minGongbei/denoinator*numberator+minGongbei/target.denoinator*target.numberator; return rationalCalc(numberat,denoina);}void rationalCalc::operator=(rationalCalc target) { numberator = target.numberator; denoinator = target.denoinator;}string rationalCalc::print() { char res1[10]; string res; if(numberator==0) return "0"; long long fenzi = numberator,fenmu = denoinator; if(fenmu<0) { fenzi = -fenzi; fenmu = -fenmu; } long long gcd = Max_GongYue(abs(fenzi),fenmu); fenmu = fenmu/gcd; fenzi = fenzi/gcd; if(fenmu==1) { sprintf(res1,"%lld",fenzi); res = res1; } else { long long partint = fenzi/fenmu; fenzi = fenzi%fenmu; if(partint!=0) { if(partint<0) fenzi = -fenzi; sprintf(res1,"%lld %lld/%lld",partint,fenzi,fenmu); } else sprintf(res1,"%lld/%lld",fenzi,fenmu); res = res1; } return res;}
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 《leetCode》: Maximum Depth of Binary Tree
- sublime text 使用技巧二
- muduo库的学习3---loop基本设计---总论
- 在centos上安装VSFTPD
- Service
- 1081. Rational Sum (20)
- 浅析Java中的final关键字
- 如何做加载状态的监听。
- exe注册成windows服务
- 《算法技术手册》相关笔记-第四章排序
- notification学习--持续更新中。。。
- iOS之新建xib无法通过拖动调整大小
- WebForm获取GET或者POST参数到实体的转换,ADO.NET数据集自动转换实体
- Android中View的事件分发机制——Android开发艺术探索笔记