1081. Rational Sum (20)
2017-05-10 20:07
211 查看
#include<cstdio> #include<algorithm> struct Fraction { int up,down; }; int gcd(int a,int b) { if(b == 0) return a; else return gcd(b,a%b); } Fraction reduction(Fraction f1) { if(f1.down<0) { f1.up = -f1.up; f1.down = -f1.down; } if(f1.up == 0) f1.down = 1; else { int x = gcd(f1.up,f1.down); f1.up = f1.up/x; f1.down = f1.down/x; } return f1; } Fraction add(Fraction f1,Fraction f2) { Fraction re; re.up = f1.up * f2.down + f2.up * f1.down; re.down = f1.down * f2.down; return reduction(re); } //输出结果,如果是整数输出整数类型 //如果是假分数,输出整数和分数部分,否则直接输出,符号在整数前面 void show_re(Fraction f1) { if(f1.down == 1) printf("%d",f1.up); else if(abs(f1.up) > f1.down) { printf("%d %d/%d",f1.up / f1.down,abs(f1.up) % f1.down, f1.down); } else { printf("%d/%d",f1.up,f1.down); } } using namespace std; int main() { int N; Fraction sum,temp; sum.up = 0; sum.down = 1; scanf("%d",&N); while(N--) { scanf("%d/%d",&temp.up,&temp.down); temp = reduction(temp); sum = add(sum,temp); sum = reduction(sum); } show_re(sum); return 0; }
相关文章推荐
- 1081. Rational Sum (20)
- PAT 1081. Rational Sum(20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- PAT (Advanced) 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- PAT 甲级 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- PAT Advanced Level 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)(分数加法)(待修改)
- 1081. Rational Sum (20) PAT甲级
- PAT 1081. Rational Sum (20)
- PAT (Advanced Level) Practise 1081 Rational Sum(20)
- 1081. Rational Sum (20)
- 【PAT】1081. Rational Sum (20)
- 1081. Rational Sum (20)
- PAT (Advanced Level) 1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)