好了,正题开始。
首先我们要明白分数的加法规律(小学知识)
通分!!!
通分!!!
通分!!!
在通分后,分母变成两个原分数分母的积,原分数分子互相乘以另一个原分数的分母,并相加成为新的分子。也就是说:
a/b + c/d = (ad+bc)/(bd)
原理自己找。
那么,分数加法宣告解决。
但是!!!
题目要求输出的是最简分数。
最简分数!!!
所以我们还要约分。
约分的方法:
兄弟们直接上代码!!!
e=a*d+b*c; //计算分子
f=b*d; //计算分母
for(int i=2;i<max(e,f);i++) //遍历公因数,记得从2开始,不然会死循环
{
if((e%i==0)&&(f%i==0)) //是否符合公因数的条件
{
e/=i; //约分分子
f/=i; //约分分母
i--; //将测试公因数-1(注意,这是精髓)
}
}
这是代码的中心部分,其他的部分自己套。 接下来是全部代码(C++):
using namespace std;
int main()
{
int a,b,c,d,e[1000]={},f[1000]={}; //老规矩,初始化
int n;
cin>>n; //老规矩,输入次数
for(int i=0;i<n;i++) //执行n次操作
{
cin>>a>>b>>c>>d; //老规矩,输入ABCD
e[i]=a*d+c*b; //前面讲了
f[i]=b*d;
for(int j=2;j<=max(e[i],f[i]);j++)
{
if((e[i]%j==0)&&(f[i]%j==0))
{
e[i]/=j;
f[i]/=j;
j--;
}
}
cout<<e[i]<<' '<<f[i]<<endl; //老规矩,输出
}
return 0; //完美结束
}
好了,本题解已结束。