153
社区成员
发帖
与我相关
我的任务
分享给你两个分数,请计算两者和。
第一行是一个整数K,表示样例的个数。 以后每行一个样例,每行4个正整数,a、b、c、d,即计算分数a/b与c/d的和。4个整数都不超过100000。
每行输出一个样例的结果,输出和。 如果结果的值为整数,那么只需要输出整数。 如果结果的值为分数,需要输出x/y的形式,并保证x,y互质。

这道题首先要分为两种情况第一种是分子可以整除分母;第二种分子不可以整除分母,也就是说有小数存在。根据整除后的结果是否为零,我们进行讨论。
首先我们要知道两个分数相加后,分子和分母分别是什么。这时候我们可以定义N为相加后的分子,m为相加后的分母。如果可以整除,我们直接输出n÷m。如果不可以整除,我们就要去观察通分后的分子和分母与最后得到的结果的分式存在什么关系?最后,我们得出结论,最大公因式将通分后的分子和分母与最后的结果相连,根据这个我们进行编写代码。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while(t--)
{
int a,b,c,d;
cin >> a >> b >> c >> d;
int n=a*d+c*b;//通分后的分子
int m=b*d;//通分后的分母
if(n%m==0)//分子除分母为0,代表可以整除
{
int i=n/m;
cout << i << endl;
}
else//有小数存在,要输出分式
{
int j=0;
for(int j=m; j>0; j--)//求分子和分母最大公因数
{
if(m%j==0 && n%j==0)
{
cout <<n/j << "/" << m/j << endl;
break;
}
}
}
}
return 0;
}