2019-07-04 分数运算

链接:https://ac.nowcoder.com/acm/problem/14519
来源:牛客网

题目描述[](javascript:void(0);)[](javascript:void(0);)

bd一直对数学很感兴趣,最近她在研究分数的加减运算,现在要求计算两个分数的运算。

输入描述:

输入一个正整数T,表示有T组数据,每组数据包括五个整数op,a,b,c,d,其中如果op=1,那么表示a/b+c/d; op=0,表示a/b-c/d。其中 1<=T,op,a,b,c,d<=100。

输出描述:

两个分数运算的结果 x/y, 要求x/y是最简分数,输出x/y。

示例1

输入

[复制](javascript:void(0);)

4
1 1 2 1 3
0 1 2 1 2
1 1 2 1 2
0 1 3 1 2

输出

[复制](javascript:void(0);)

5/6
0/1
1/1
-1/6

说明

提示:
如果 x/y 是负数的时候,输出-|x|/|y|

#include
using namespace std;

int gcd(int a,int b){ return a ==0? b:gcd(b%a,a);}
int main(){
    int ttt = 2, aaa = 4;
    int T,op,a,b,c,d;
    cin>>T;
    int x,y,gd;
    while(T--){
        cin>>op>>a>>b>>c>>d;
        switch (op)
        {
        case 1:
            x = a*d+b*c;
            y = b*d;
            gd = gcd(x,y);
            x = x/gd;
            y = y/gd;
            
            break;
        case 0:
            x = a*d - b*c;
            y = b*d;
            gd = gcd(x,y);
            x = x/gd;
            y = y/gd;
            break;
        }
        if( y < 0){
            y = 0 - y;
            x = 0 - x;
        }
        std::cout << x << "/" << y << endl;
    }

    cin>>T;
    return 0;
}

你可能感兴趣的:(2019-07-04 分数运算)