package go.jacob.day822;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] strs = new String[n];
//三个数分别为分子,分母,带分数的整数部分
int numerator = 0, denominator = 0, first = 0;
for (int i = 0; i < n; i++)
strs[i] = sc.next();
sc.close();
for (int i = 0; i < n; i++) {
int flag = 1, begin = 0;
if (strs[i].charAt(0) == '-') {
flag = -1;
begin = 1;
}
int tmpNumerator = flag * Integer.parseInt(strs[i].substring(begin, strs[i].indexOf("/")));
int tmpDenominator = Integer.parseInt(strs[i].substring(strs[i].indexOf("/") + 1));
if (tmpDenominator == 0)
return;
if (i == 0) {
numerator = tmpNumerator;
denominator = tmpDenominator;
} else {
numerator = numerator * tmpDenominator + tmpNumerator * denominator;
denominator *= tmpDenominator;
}
// 使用欧几里得算法求最大公约数,每次计算都要对分数进行化简,放置溢出
int factor = gcd(numerator, denominator);
if (factor == 0) {
System.out.println(0);
return;
}
numerator /= factor;
denominator /= factor;
}
// 把假分数化成带分数
first += numerator / denominator;
numerator = numerator % denominator;
// 输出结果的时候要判断:整数部分是否为0?分子书否为0?
if (first != 0)
if (numerator != 0)
System.out.println(first + " " + numerator + "/" + denominator);
else
System.out.println(first);
else if (numerator != 0)
System.out.println(numerator + "/" + denominator);
else
System.out.println(0);
}
private static int gcd(int a, int b) {
if (a == 0)
return 0;
if (a < 0)
a = -a;
if (b < 0)
b = -b;
if (a < b) {
int tmp = a;
a = b;
b = tmp;
}
if (a % b == 0)
return b;
else
return gcd(b, a % b);
}
}