7-35 有理数均值 (20分)
输入格式:
输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。
输出格式:
在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例:
4
1/2 1/6 3/6 -5/10
输出样例:
1/6
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
long r1 = 0;
long r2 = 1;
for(int i = 0; i < n; i++){
String array [] = new String [2];
String num = input.next();
array = num.split("/");
r1 = r1 * Long.parseLong(array[1])+ res2*Long.parseLong(array[0]);
res2 = res2 * Long.parseLong(array[1]);
if(i == n-1){
r2 = r2 * n;
}
long sen = cad(res1,res2);
r1 = r1 / sen;
r2 = r2 / sen;
if(r1 == 0 || r2 == 1)
System.out.print(r1);
else
System.out.print(r1+"/"+r2);
}
}
public static long cad(long a, long b){
if(a % b == 0)
return b;
else
return sen (b, a % b);
}
}