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 3 int get_gcd(int a,int b); 4 5 int main(){ 6 int T; 7 int a; 8 int b; 9 int c; 10 int d; 11 int lcm; 12 int temp; 13 int gcd; 14 15 scanf("%d",&T); 16 17 while(T--){ 18 scanf("%d%d%d%d",&a,&b,&c,&d); 19 lcm=b*d/get_gcd(b,d); 20 21 temp=(lcm/b*a+lcm/d*c); 22 gcd=get_gcd(temp,lcm); 23 24 printf("%d %d\n",temp/gcd,lcm/gcd); 25 } 26 return 0; 27 } 28 29 int get_gcd(int a,int b){ 30 int temp; 31 int remainder; 32 33 if(a<b){ 34 temp=a; 35 a=b; 36 b=temp; 37 } 38 39 while(a%b){ 40 remainder=a%b; 41 42 a=b; 43 b=remainder; 44 } 45 46 return b; 47 }