zoukankan      html  css  js  c++  java
  • HDU.2503 a/b + c/d (分式化简)

    a/b + c/d

    Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 12746 Accepted Submission(s): 6774

    Problem Description

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

    Input

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

    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

    解题思路:

    模拟一下分式化简过程就行,先通分,再相加,然后能约分约分。
    值得注意的2个地方:
    1.gcd函数的写法
    2.特殊情况的处理

    代码:

    /*
        Title:HDU.2503
        Date:2016-10-24
        Author:pengwill
        Blog:http://blog.csdn.net/pengwill97/
    */
    #include <stdio.h>
    #include <stdlib.h>
    
    int find(int a,int b);
    int main()
    {
        int T;
        int a, b, c,d,lcm,n;
        scanf("%d" ,&T);
        while(T--){
            scanf("%d%d%d%d",&a,&b,&c,&d);
            lcm = b * d / find(b,d);
            n = a * lcm / b + c * lcm / d;
            int judge = find(lcm,n);
            if(judge == 1){
                printf("%d %d
    ",n,lcm);
            }else{
                printf("%d %d
    ",n / judge, lcm /judge);
            }
    
        }
        return 0;
    }
    int find(int a,int b)
    {
        int t;
        if(a<b){
            t = a;
            a = b;
            b = t;
        }
        while(b && b!= 1){
            t = a %b;
            a = b;
            b = t;
        }
        if(b == 1){
            return b;
        }else{
            return a;
        }
    
    }
    
  • 相关阅读:
    Idea快捷键
    Java学习之路--书籍推荐
    泵式等待基元
    uni-app,wex5,APPcan,ApiCloud几款国内webapp开发框架的选型对比
    前端框架2019 云开发
    select2 javascript控件 如何设置指定的值
    Github 索引
    linux
    WPF 中的 Uri 地址的不同写法
    WPF GridSplitter 使用技巧
  • 原文地址:https://www.cnblogs.com/pengwill/p/7367266.html
Copyright © 2011-2022 走看看