首页 > 代码库 > GDUFE ACM-1050

GDUFE ACM-1050

题目:http://acm.gdufe.edu.cn/Problem/read/id/1050

 

a/b + c/d

Time Limit: 2000/1000ms (Java/Others)

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

思路:先把a/b+c/d通分计算,分别算出分子分母,再找出分子分母的最大公约数,分别除以最大公约数,得出结果

难度:我现在能做得出的题目能有多难==

代码:
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,a,b,c,d,e,i,f;
 5     while(scanf("%d",&n)!=EOF)
 6     {
 7         while(n--)
 8         {
 9             scanf("%d%d%d%d",&a,&b,&c,&d);
10             e=a*d+b*c;
11             f=b*d;
12             i=1;
13             if(e<f)
14                 for(i=e;i>0;i--)
15                     if(e%i==0&&f%i==0)
16             {
17                 printf("%d %d\n",e/i,f/i);
18                 break;
19             }
20             if(f<e)
21                 for(i=f;i>0;i--)
22                     if(e%i==0&&f%i==0)
23             {
24                 printf("%d %d\n",e/i,f/i);
25                 break;
26             }
27             if(e==f) printf("1 1\n");
28             if(i==0)
29                 printf("%d %d\n",e,f);
30         }
31     }
32     return 0;
33 }

 

GDUFE ACM-1050