题目链接:https://www.patest.cn/contests/gplt/L1-009
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;
typedef struct node
{
ll a,b;
}fraction;
ll gcd(ll a,ll b)
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
ll lcm(ll a,ll b)
{
ll tmp=gcd(a,b);
return a*(b/tmp);
}
int main()
{
int n;
while(cin>>n){
fraction sum;
int flag1=0; //结果是否有整数部分
int flag2=0; //结果是否为负数
scanf("%lld/%lld",&sum.a,&sum.b);
for(int i=0;i<n-1;i++){
ll a,b;
scanf("%lld/%lld",&a,&b);
ll fm=lcm(sum.b,b);
ll fz=sum.a*(fm/sum.b)+a*(fm/b);
sum.a=fz; sum.b=fm;
}
ll fz=sum.a,fm=sum.b;
if(!fz) //结果为0的情况
printf("0");
if(fz/fm){
printf("%lld",fz/fm);
flag1=1;
}
if(fz<0){
flag2=1;
fz=-fz;
}
if(fz%fm){
fz=fz%fm;
ll tmp=gcd(fz,fm);
if(flag1) printf(" ");
if(!flag1&&flag2) printf("-");//没有整数部分但分数部分为负的情况
printf("%lld/%lld",fz/tmp,fm/tmp);
}
printf("\n");
}
return 0;
}