import java.math.BigInteger;
import java.util.Scanner;
import java.util.regex.MatchResult;
class Rational {
BigInteger n, d;
}
public class Main {
public static Rational add(Rational r1, Rational r2) {
BigInteger gcd = r1.d.gcd(r2.d);
BigInteger q1 = r1.d.divide(gcd);
BigInteger q2 = r2.d.divide(gcd);
Rational sum = new Rational();
sum.n = r1.n.multiply(q2).add(r2.n.multiply(q1));
sum.d = r1.d.multiply(q2);
return sum;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in).useDelimiter("[\\s/]");
int n = Integer.parseInt(scanner.nextLine());
Rational[] list = new Rational[n];
for(int i = 0; i < n; i ++) {
list[i] = new Rational();
list[i].n = BigInteger.valueOf(scanner.nextLong());
list[i].d = BigInteger.valueOf(scanner.nextLong());
}
Rational sum = list[0];
for(int i = 1; i < n; i ++) {
sum = add(sum, list[i]);
}
if(sum.n.equals(BigInteger.ZERO)) {
System.out.println("0");
}
else {
boolean sign = true;
if(sum.d.compareTo(BigInteger.ZERO) < 0) {
sum.d.negate();
sign = false;
}
BigInteger gcd = sum.n.gcd(sum.d);
sum.n = sum.n.divide(gcd);
sum.d = sum.d.divide(gcd);
BigInteger[] r = sum.n.divideAndRemainder(sum.d);
if(!r[0].equals(BigInteger.ZERO)) {
if(!sign) {
System.out.print('-');
}
System.out.print(r[0]);
if(!r[1].equals(BigInteger.ZERO))
System.out.print(' ');
}
if(!r[1].equals(BigInteger.ZERO)) {
if(!sign) {
System.out.print('-');;
}
System.out.print(r[1]);
System.out.print('/');;
System.out.print(sum.d);
}
}
}
}
1081. Rational Sum (20)
最新推荐文章于 2016-11-26 19:02:54 发布