#include<bits/stdc++.h>
using namespace std;
struct number
{
long long zi,mu;
};
long long gcd(long long a,long long b)
{
return b?gcd(b,a%b):a;
}
int main()
{
int x;cin>>x;
vector<number>nums(x);
long long fengzi=0,fengmu=0;
for(int i=0;i<x;i++)
{
cin>>nums[i].zi;
scanf("/");
cin>>nums[i].mu;
if(i==0)
{
fengzi+=nums[i].zi;
fengmu+=nums[i].mu;
}
else
{
long long num1=gcd(fengmu,nums[i].mu);
long long num2=fengzi*nums[i].mu/num1+nums[i].zi*fengmu/num1;
long long num3=nums[i].mu*fengmu/num1;
long long num4=gcd(num2,num3);
fengzi=num2/num4;
fengmu=num3/num4;
}
}
if(fabs(fengzi)>fengmu)
{
if(fengzi%fengmu!=0)
{
cout<<(fengzi-fengzi%fengmu)/fengmu<<' '<<fengzi%fengmu<<'/'<<fengmu;
}
else
{
cout<<fengzi/fengmu;
}
}
else if(fengzi==0)cout<<0;
else
cout<<fengzi<<'/'<<fengmu;
}
首先我们要懂得这么一个交换思路
当我们求出两个数的最公因子时,我们如何将其通分呢,基本就是当前分子乘上另一个分数的分母在除于最大公因子然后我们是要求分子的通分和,所以我们在进行一次相同的步骤将二者加起来,而分母通分后的结果就是两个分母相乘在除于最大公因子。然后我们会得到相应的分母与分子我们在求出二者的公因子,让二者分别除于这个公因子即可。