码迷,mamicode.com
首页 > 其他好文 > 详细

结构-02. 有理数加法(15)

时间:2015-02-05 14:59:06      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:java   pat   结构   

本题要求编写程序,计算两个有理数的和。

输入格式:

输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

输出格式:

在一行中按照“a/b”的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
import 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;
	}
}

 

结构-02. 有理数加法(15)

标签:java   pat   结构   

原文地址:http://blog.csdn.net/jason_wang1989/article/details/43527873

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!