Pat(Advanced Level)Practice--1081(Rational Sum)
来源:互联网 发布:知识产权 淘宝 编辑:程序博客网 时间:2024/04/24 01:40
Pat1081代码
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<cstdio>#include<cstdlib>using namespace std;long int GCD(long int num,long int den){long int temp;while(den!=0){temp=num%den;num=den;den=temp;}return num;}void GetSum(long int a,long int b,long int *num,long int *den){long int ret;long int upsum,downsum;upsum=a*(*den)+b*(*num);downsum=b*(*den);ret=GCD(upsum,downsum);(*num)=upsum/ret;(*den)=downsum/ret;}int main(int argc,char *argv[]){int n;long int a,b;long int num=0,den=0;scanf("%d",&n);scanf("%ld/%ld",&num,&den);for(int i=1;i<n;i++){scanf("%ld/%ld",&a,&b);GetSum(a,b,&num,&den);}if(num%den==0)printf("%ld\n",num/den);else if(num>den){printf("%ld",num/den);printf(" %ld/%ld\n",num-num/den*den,den);}elseprintf("%ld/%ld\n",num,den);return 0;}
- Pat(Advanced Level)Practice--1081(Rational Sum)
- Pat(Advanced Level)Practice--1088(Rational Arithmetic)
- PAT (Advanced Level) Practise 1081 Rational Sum (20)
- PAT (Advanced Level) Practise 1081 Rational Sum(20)
- PAT Advanced Level 1081. Rational Sum (20)
- 【PAT】【Advanced Level】1081. Rational Sum (20)
- [PAT (Advanced Level) ]1081. Rational Sum 解题文档
- Pat(Advanced Level)Practice--1007(Maximum Subsequence Sum)
- PAT (Advanced Level) Practice 1006
- Pat(Advanced Level)Practice--1025(PAT Ranking)
- Pat(Advanced Level)Practice--1075(PAT Judge)
- 【PAT】【Advanced Level】1088. Rational Arithmetic (20)
- Pat(Advanced Level)Practice--1003(Emergency)
- Pat(Advanced Level)Practice--1004(Counting Leaves)
- Pat(Advanced Level)Practice--1008(Elevator)
- Pat(Advanced Level)Practice--1010(Radix)
- Pat(Advanced Level)Practice--1015(Reversible Primes)
- Pat(Advanced Level)Practice--1024(Palindromic Number)
- OS X 10.9 Mavericks下如何安装Command Line Tools(命令行工具)
- C++ protected的访问权限问题
- C++中string总结
- Dalvik虚拟机与java虚拟机的异同
- hdu 4825
- Pat(Advanced Level)Practice--1081(Rational Sum)
- leetcode做题总结,题目Best Time to Buy and Sell Stock 2012/10/30
- 设计模式-适配器(Adaper)模式
- 关于dup和dup2函数的重定向与还原
- HDU 2163 Palindromes
- 集合(Map练习)
- 最短路径Ⅰ—Dijkstra算法
- Java多态
- JSP基础语法(章节摘要)