(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 }
作者:cpoint
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.