记录PTA编程题练习7-35 有理数均值——Python3实现

题目描述:

本题要求编写程序,计算N个有理数的平均值。

输入格式:

输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 ...的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。

输出格式:

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

代码实现:

python 复制代码
from math import gcd
N = int(input())
s = input().split()
fz,fm = [],[]  #分别保存分子分母约分后的结果的列表
maxm ,maxz = 1,0
for f in s:
    z,m = map(eval,f.split("/"))  #提取分子分母
    y = gcd(z,m)  #最大公约数
    z = z//y
    m = m//y
    maxm *= m  #通分后的分母
    fz.append(z)
    fm.append(m)
for i in range(N):  #计算通分后的分子
    z = (maxm//fm[i])*fz[i]
    maxz += z
endz = maxz//gcd(maxz,maxm*N)  #平均值的分子
endm = maxm*N//gcd(maxz,maxm*N)  #平均值的分母
if endz % endm == 0:
    print(endz//endm)
else:
    print("{}/{}".format(endz,endm))
相关推荐
Csvn7 小时前
🌟 LangChain 30 天保姆级教程 · Day 13|OutputParser 进阶!让 AI 输出自动转为结构化对象,并支持自动重试!
python·langchain
cch89187 小时前
Python主流框架全解析
开发语言·python
sg_knight7 小时前
设计模式实战:状态模式(State)
python·ui·设计模式·状态模式·state
好运的阿财8 小时前
process 工具与子agent管理机制详解
网络·人工智能·python·程序人生·ai编程
张張4088 小时前
(域格)环境搭建和编译
c语言·开发语言·python·ai
weixin_423533998 小时前
【Windows11离线安装anaconda、python、vscode】
开发语言·vscode·python
Ricky111zzz8 小时前
leetcode学python记录1
python·算法·leetcode·职场和发展
小白学大数据8 小时前
Selenium+Python 爬虫:动态加载头条问答爬取
爬虫·python·selenium
Hui Baby9 小时前
springboot读取配置文件
后端·python·flask
阿Y加油吧9 小时前
回溯法经典难题:N 皇后问题 深度解析 + 二分查找入门(搜索插入位置)
开发语言·python
热门推荐