寒假作业——分数求和

来源:互联网 发布:里基戴维斯刷数据 编辑:程序博客网 时间:2024/04/30 13:39

Description

现在给你两个分数,请计算他们的和。


INPUT

第一行为整数N,表示有多少组测试数据。 每一组数据为4个整数a,b,c,d(0<a,b,c,d<1000).

OUTPUT

请计算a/b+c/d的结果,输出其最简形式的分子和分母,以空格隔开。

SAMPLE INPUT

21 2 1 34 3 2 3

SAMPLE OUTPUT

5 62 1

HINT

先通分,化成分子和分母的式子,再求分子和分母的最大公约数,并除以,求最大公约数时用if和for会超时


#include<stdio.h>int gcd(int a,int b)//辗转相除法求最大公约数{    int t;    if(a<b)    {        t=a;        a=b;        b=t;    }    if(a%b==0)        return b;    else        return gcd(b,a%b);}int main(){   int n,a,b,c,d,sum1,sum2;   int m1,m2;   scanf("%d",&n);   while(n--)   {       scanf("%d %d %d %d",&a,&b,&c,&d);       sum1=a*d+b*c;//分子       sum2=b*d;//分母       m1=sum1/gcd(sum1,sum2),m2=sum2/gcd(sum1,sum2);       printf("%d %d\n",m1,m2);   }    return 0;}



0 0