(HDOJ 2503)a/b + c/d

Problem Description
给你2个分数,求他们的和,并要求和为最简形式。
 
Input
输入首先包含一个正整数T(T<=1000),表示有T组测试数据,然后是T行数据,每行包含四个正整数a,b,c,d(0<a,b,c,d<1000),表示两个分数a/b 和 c/d。
 
Output
对于每组测试数据,输出两个整数e和f,表示a/b + c/d的最简化结果是e/f,每组输出占一行。
 
Sample Input
2
1 2 1 3
4 3 2 3
 
Sample Output
5 6
2 1
 
 1 #include<stdio.h>
 2 #include<math.h>
 3 #define N 10
 4 
 5 int gcd(int a,int b) 
 6 {
 7     int r,t;
 8     if(a<b)
 9     {
10      t=a;
11      a=b;
12      b=t;
13      }
14     while(b)
15     {
16       r=a%b;
17       a=b;
18       b=r;
19    }
20    return a;
21 }
22 
23 int lcm(int m,int n)
24 {
25      int a;
26      a=gcd(m,n);
27      return n*(m/a);
28 }
29 
30 int main()
31 {
32      int a,b,c,d;
33      int m,n,t;
34      int T;
35      while(scanf("%d",&T)!=EOF)
36      {
37          while(T--)
38          {
39              scanf("%d %d %d %d",&a,&b,&c,&d);
40              m=lcm(b,d);
41                n=a*(m/b)+c*(m/d);
42             t=gcd(m,n);
43             m=m/t;
44             n=n/t;
45             printf("%d ",n);
46             printf("%d\n",m);
47          }
48      }
49  return 0;
50 }
原文地址:https://www.cnblogs.com/cpoint/p/3011398.html