链接: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;
}
网友评论