本题要求编写程序,计算N个有理数的平均值。
输入格式:
输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …
的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。
输出格式:
在一行中按照a/b
的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
#test7-24.py
def gcd(a,b):
if a<0:
a = -a
if a==0:
return b
else:
return (b if a%b==0 else gcd(b,a%b))
N = eval(input())
userInput = input().split()
maxCom = 1
fenZi = list()
fenMu = list()
for fenShu in userInput:
zi,mu = map(eval, fenShu.split("/"))
yue = gcd(zi,mu)
zi = zi//yue
mu = mu//yue
maxCom *= mu
fenMu.append(mu)
fenZi.append(zi)
sum = 0
for i in range(N):
zi = maxCom//fenMu[i] * fenZi[i]
sum += zi
div=gcd(sum,maxCom*N)
resultZi = sum//div
resultMu = maxCom*N//div
if resultZi%resultMu == 0:
print(resultZi//resultMu)
else:
print("{}/{}".format(resultZi,resultMu))