Problem Description
给一个只包含两个分数和加减号的数学表达式,请你计算这个表达式的结果。
Input
第一行一个整数 T(1≤T≤50) ,表示测试数据组数。接下来包含 T 组测试数据。
对于每组测试数据,第一行输入四个数 a,b,c,d (1≤a,b,c,d≤1000) ,表示参与运算的两个分数 a/b 和 c/d 。
第二行输入一个数 op (0≤op≤1) ,op=1 表示运算为加法,op=0 表示运算为减法。
Output
对于每组测试数据,输出一个不可化简的分数表示答案。
请保证分母为正数。
Sample Input
2
10 5 21 7
1
1 1 8 5
0
Sample Output
5/1
-3/5
水题,直接代码。注意互质。
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
for(int i=0;i<t;i++)
{
int fz1,fm1,fz2,fm2;
scanf("%d %d %d %d",&fz1,&fm1,&fz2,&fm2);
int fz,fm,ffz,s;
fz=fz1*fm2+fz2*fm1;
ffz=fz1*fm2-fz2*fm1;
fm=fm1*fm2;
s=__gcd(fz,fm); //最大公约数
int k;
scanf("%d",&k);
if(k==1)
{
printf("%d/%d\n",fz/s,fm/s);
}
else if(k==0)
{
printf("%d/%d\n",ffz/s,fm/s);
}
}
}