随笔-生活工作点滴

2019-07-04 分数运算

2019-07-04  本文已影响0人  黑夜与繁星

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

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

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

输入描述:

<pre>输入一个正整数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。</pre>

输出描述:

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

示例1

输入

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

<pre>4
1 1 2 1 3
0 1 2 1 2
1 1 2 1 2
0 1 3 1 2</pre>

输出

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

<pre>5/6
0/1
1/1
-1/6</pre>

说明

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

#include<bits/stdc++.h>
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;
}

上一篇 下一篇

猜你喜欢

热点阅读