L1-009 N个数求和 - java

题目解析

给定一些分数 计算其总和

解题思路

就是一个分数运算得式子

将第一个变成 ba\frac{b} {a} 之后得数变成 dc\frac{d} {c} 的形式 每次将 ba+dc\frac{b} {a} + \frac{d} {c} 运算的结果赋值给 ba\frac{b} {a} 然后利用最小公倍数(gcd)化简 一直计算到最后

代码

import java.io.*;
import java.util.*;

public class Main
{

	static int gcd(int a, int b)
	{
		return b == 0 ? a : gcd(b, a % b);
	}

	public static void main(String[] args)
	{
		int n = sc.nextInt();
		String str = sc.next();

		String s[] = str.split("/");

		int b = Integer.valueOf(s[0]), a = Integer.valueOf(s[1]);
		for (int i = 2; i <= n; i++)
		{
			str = sc.next();
			s = str.split("/");
			int d = Integer.valueOf(s[0]), c = Integer.valueOf(s[1]);

			b = b * c + a * d;
			a = a * c;

			int g = gcd(a, b);

			b /= g;
			a /= g;
		}

		if (a == 1)
			out.println(b);
		else if (a > b)
			out.println(b + "/" + a);
		else
			out.println((b / a) + " " + (b % a) + "/" + a);

		out.flush();
		out.close();
	}

	static Scanner sc = new Scanner(System.in);
	static PrintWriter out = new PrintWriter(System.out);
}


团体程序设计天梯赛-练习集-java

赞赏