上善若水

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  2 Posts :: 32 Stories :: 2 Comments :: 0 Trackbacks

常用链接

留言簿

我参与的团队

最新随笔

搜索

  •  

积分与排名

  • 积分 - 9766
  • 排名 - 1179

最新评论

阅读排行榜

评论排行榜

a/b + c/d

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:122            测试通过:55

描述

给你2个分数,求他们的和,并要求和为最简形式。

输入

输入首先包含一个正整数T(T<=1000),表示有T组测试数据,然后是T行数据,每行包含四个正整数a,b,c,d(0<a,b,c,d<1000),表示两个分数a/b 和 c/d。

输出

对于每组测试数据,输出两个整数e和f,表示a/b + c/d的最简化结果是e/f,每组输出占一行。

样例输入

1
4 3 2 3

样例输出

2 1

题目来源

NUAA

分析:找最大公约数。。
#include<stdio.h>
#define x a*d+b*c
int gcd(int a,int b)
{
    
int c;
    
if (a<b)
    {
        c
=a;
        a
=b;
        b
=c;
    }
    
while (a%b)
    {
        c
=a%b;
        a
=b;
        b
=c;
    }
    
return b;
}
int main()
{
    
int a,b,c,d,t;
    scanf(
"%d",&t);
    
while (t--)
    {
        scanf(
"%d%d%d%d",&a,&b,&c,&d);
        printf(
"%d %d\n",(x)/gcd(x,b*d),b*d/gcd(x,b*d));
    }
}
posted on 2009-12-15 18:24 上善若水 阅读(107) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理