0
点赞
收藏
分享

微信扫一扫

7-35 有理数均值 (20 分)(python编写)

ZMXQQ233 2022-02-22 阅读 84

本题要求编写程序,计算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))
举报

相关推荐

0 条评论