1001.Rational Sum (20)
来源:互联网 发布:酷牛网络我的世界 编辑:程序博客网 时间:2024/04/25 07:18
题目链接:http://www.nowcoder.com/pat/1/problem/4311
时间限制 1000 ms 内存限制 65536 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)
题目描述
Given N rational numbers in the form “numerator/denominator”, you are supposed to calculate their sum.
输入描述:
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.
输出描述:
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.
输入例子:
5
2/5 4/15 1/30 -2/60 8/3
输出例子:
3 1/3
代码 C++:
#include <iostream>int gcd(int a, int b){ if(b==0) return a>0?a:(a*-1); return gcd(b,a%b);}int lcm(int a, int b){ return a/gcd(a,b)*b;}int main(){ int N, SumA=0, SumB=1; scanf("%d",&N); while(N--){ int a, b, tmp; scanf("%d/%d",&a,&b); tmp = lcm(SumB,b); SumA = SumA*(tmp/SumB)+a*(tmp/b); SumB = tmp; tmp = gcd(SumA,SumB); SumA /= tmp; SumB /= tmp; } if(SumA==0){ printf("0"); return 0; } if(SumA>=SumB){ printf("%d",SumA/SumB); SumA %= SumB; if(SumA) printf(" %d/%d",SumA,SumB); } else if(SumA<=(SumB*-1)){ printf("%d",SumA/SumB); SumA %= (-1*SumB); if(SumA) printf(" %d/%d",SumA,SumB); }else{ printf("%d/%d",SumA,SumB); } return 0;}
- 1001.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)
- 路径与子路径
- 笔试题总结
- 关于RadioGroup某个item设置为check后,会一直选中的问题
- c++友元实现操作符重载
- Best Time to Buy and Sell Stock II
- 1001.Rational Sum (20)
- A1075 . PAT Judge (25)
- uva 12083 Guardian of Decency (二分图匹配)
- USACO Ski Course Design解析和C语言实现
- Hibernate入门
- 【LeetCode】(58)Length of Last Word(Easy)
- swust oj 2297 逆序数 (dp)
- canvas 基本点理解
- 关于setTimeout函数中的闭包问题