#include <bits/stdc++.h>
using namespace std;
struct fenshu{
long long fenzi;
long long fenmu;
char sign;
fenshu(){
fenzi = fenmu = 1;
sign = '+';
}
void output(){
if(sign == '-')
printf("-");
if(fenmu != 1)
printf("%d/%d", fenzi, fenmu);
else
printf("%d", fenzi);
}
void tiaozheng(){
sign = '-';
fenzi = abs(fenzi);
}
void huajian(){
long long gcd = __gcd(fenzi, fenmu);
fenzi /= gcd;
fenmu /= gcd;
}
void jisuan(fenshu x, fenshu y){
long long lcm = x.fenmu * y.fenmu / __gcd(x.fenmu, y.fenmu);
long long f = lcm / x.fenmu, s = lcm / y.fenmu;
x.fenmu *= f;
x.fenzi *= f;
y.fenmu *= s;
y.fenzi *= s;
if(x.sign == y.sign){
sign = x.sign;
fenmu = x.fenmu;
fenzi = x.fenzi + y.fenzi;
}
else{
fenmu = x.fenmu;
fenzi = abs(x.fenzi - y.fenzi);
if(fenzi < 0)
tiaozheng();
}
huajian();
}
};
int main(){
fenshu a,b;
char op;
scanf("%d/%d", &a.fenzi, &a.fenmu);
if(a.fenzi < 0)
a.tiaozheng();
cin >> op;
while (scanf("%d/%d", &b.fenzi, &b.fenmu)!=EOF){
if(op == '-')
b.tiaozheng();
else b.sign = '+';
if (op == EOF) break;
a.jisuan(a, b);
cin >> op;
}
a.output();
return 0;
}
记录详情