本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照“a/b”的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:1/3 1/6输出样例1:
1/2输入样例2:
4/3 2/3输出样例2:
2import java.util.Scanner; class Rational { int n; /* 分子 */ int d; /* 分母 */ } public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); String str = cin.nextLine(); String[] strs = str.split(" "); String[] StringNums1 = strs[0].split("/"); String[] StringNums2 = strs[1].split("/"); int[] IntNums = new int[4]; IntNums[0] = Integer.parseInt(StringNums1[0]); IntNums[1] = Integer.parseInt(StringNums1[1]); IntNums[2] = Integer.parseInt(StringNums2[0]); IntNums[3] = Integer.parseInt(StringNums2[1]); Rational r = new Rational(); r.n = IntNums[0] * IntNums[3] + IntNums[1] * IntNums[2]; r.d = IntNums[1] * IntNums[3]; int g = gcd(r.n, r.d); r.n /= g; r.d /= g; if (r.d == 1) { System.out.println(r.n); } else { System.out.println(r.n + "/" + r.d); } } public static int gcd(int m, int n) { int r; while (true) { r = m % n; if (r == 0) break; m = n; n = r; } return n; } }
原文地址:http://blog.csdn.net/jason_wang1989/article/details/43527873