首页 > 编程语言 >L1-009 N个数求和 python

L1-009 N个数求和 python

时间:2024-07-04 22:09:20浏览次数:18  
标签:python lst else int second fenmu L1 009 fenzi

python实现:

需要考虑很多情况:

如果只输入一个数:分子/分母 是否有商,是否需要约分,如:8/3,-8/3,0/3。

如果输入多个数:通分后分子>0,<0还是=0,分子/分母 是否有商,是否需要约分。

num=int(input())
s=input()

if num==1:
    fenzi=int(s.split("/")[0])
    fenmu=int(s.split("/")[1])
    if abs(fenzi)>fenmu:
        print("{shang} {fenzi}/{fenmu}".format(shang=int(fenzi/fenmu),fenzi=fenzi%fenmu,fenmu=fenmu))
    elif abs(fenzi)==fenmu:
        print("{}".format(int(fenzi/fenmu)))
    else:
        print(s)
else:
    lst=[]
    for i in range(num):
        si=s.split(' ')[i]
        temp_lst=[]
        fenzi=si.split('/')[0]
        fenmu=si.split('/')[1]
        temp_lst.append(int(fenzi))
        temp_lst.append(int(fenmu))

        lst.append(temp_lst) # eg: [[2,5],[4,15],[1,30],[-2,60],[8,3]]

    l=len(lst)

    for i in range(l):
        if i<=l-2:
            fenzi=lst[i+1][0]*lst[i][1]+lst[i][0]*lst[i+1][1] # 所有分数通分
            fenmu=lst[i][1]*lst[i+1][1]

            lst[i+1][0]=fenzi
            lst[i+1][1]=fenmu

    fenzi = lst[l-1][0] # 通分后的分子 可能为 0,可能为负数
    fenmu = lst[l-1][1]

    if fenzi==0: # 通分后分子为 0
        print("0")
    else:  # 通分后分子非 0
        if fenzi>=0:
            flag=True # 标志正负数
        else:
            flag=False

        fenzi=abs(fenzi) # 正负数取绝对值
        if fenzi % fenmu == 0 and fenzi >= fenmu: # 分子/分母 刚好能整除
            if flag: # 正数
                print("{}".format(int(fenzi / fenmu)))
            else: # 负数
                print("-{}".format(int(fenzi / fenmu)))
        else:  # 不能整除
            if fenzi > fenmu:  # 分子>分母
                first = int(fenzi / fenmu)
                second = fenzi % fenmu
                # 分子分母找公因子相除  second/fenmu
                m = max(second, fenmu)
                n = min(second, fenmu)
                t = m % n
                while t != 0:
                    m, n = n, t
                    t = m % n
                # 最大公约数为 n
                second_fenzi = int(second / n)
                second_fenmu = int(fenmu / n)
                if flag: # 正数
                    print("{shang} {fenzi}/{fenmu}".format(shang=first, fenzi=second_fenzi, fenmu=second_fenmu))
                else: # 负数
                    print("-{shang} {fenzi}/{fenmu}".format(shang=first, fenzi=second_fenzi, fenmu=second_fenmu))
            else:  # 分子<分母
                # 分子分母找公因子相除 fenzi/fenmu
                m = max(fenzi, fenmu)
                n = min(fenzi, fenmu)
                t = m % n
                while t != 0:
                    m, n = n, t
                    t = m % n
                # 最大公约数为 n
                fenzi = int(fenzi / n)
                fenmu = int(fenmu / n)
                if flag: # 正数
                    print("{fenzi}/{fenmu}".format(fenzi=fenzi, fenmu=fenmu))
                else: # 负数
                    print("-{fenzi}/{fenmu}".format(fenzi=fenzi, fenmu=fenmu))

 

标签:python,lst,else,int,second,fenmu,L1,009,fenzi
From: https://www.cnblogs.com/forkroad/p/18284778

相关文章

  • Python酷库之旅-第三方库Pandas(001)
    目录一、Pandas库的由来1、背景与起源1-1、开发背景1-2、起源时间2、名称由来3、发展历程4、功能与特点4-1、数据结构4-2、数据处理能力5、影响与地位5-1、数据分析“三剑客”之一5-2、社区支持二、Pandas库的应用场景1、数据分析2、数据清洗3、数据可视化4、......
  • 2024 年亚太杯 APMCM 数学建模竞赛 B题 洪水灾害的数据分析与预测 详细思路+matlab代
    比赛期间24小时内半价,思路会结合chatgpt-4,都是个人比赛思路,可能不是很好,但是24年所有数学建模思路都会发布到这一个专栏内,只需订阅一次,感谢大家的一直支持!!!B题洪水灾害的数据分析与预测洪水是暴雨、急剧融冰化雪、风暴潮等自然因素引起的江河湖泊水量迅速增加,或者水位迅猛......
  • Python基础语法(与C++对比)(持续更新ing)
    代码块Python在统一缩进体系内,为同一代码块C++{...}内部的为同一代码块注释Python单行注释:#...多行注释:'''...'''C++单行注释://...多行注释:/*...*/数据类型1.Python数据类型    Python中支持数字之间使用下划线'_'分割数字,旨在查看方便    ......
  • Python学习笔记28:进阶篇(十七)常见标准库使用之质量控制中的代码质量与风格第二部分
    前言本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。根据模块知识,一次讲解单个或者多个模块的内容。教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html质量控制质量控制(QualityControl,QC),主要关注于提高......
  • 【python爬虫实战】进阶天气虫虫(过程复盘 & 心得分享)
    程序设计过程里的一些心得:0.规模较大的程序,往往都是以更小的功能块搭建起来的。如此,为了提升总体程序的构建效率,笔者发现分“两步走”会比较高效:    A.遇到需要反复调试的功能块,可先在另一程序中逐一单独测试某一功能块(这有助于突出模块本身的细节问题)   ......
  • 2024 年第十四届 APMCM 亚太杯 数学建模 A题 飞行器外形的优化问题 详细代码+思路+mat
     比赛期间24小时内半价,思路会结合chatgpt-4,都是个人比赛思路,可能不是很好,但是24年所有数学建模思路都会发布到这一个专栏内,只需订阅一次,感谢大家的一直支持!!!A题飞行器外形的优化问题飞行器是在大气层内或大气层外空间飞行的器械。飞行器可以分为:航空器、航天器、火箭和导......
  • 2024年亚太杯数学建模竞赛 APMCM C题 基于量子计算的物流配送问 详细思路+matlab代码+
     比赛期间24小时内半价,思路会结合chatgpt-4,都是个人比赛思路,可能不是很好,但是24年所有数学建模思路都会发布到这一个专栏内,只需订阅一次,感谢大家的一直支持!!!        随着电子商务的迅猛发展,电商平台对物流配送的需求日益增长。为了确保货物能够按时、高效地送达消费......
  • Python分支
    一、顺序结构    顺序结构是计算机程序中的一种基本的控制结构,它指示计算机按照代码的顺序依次执行每一条语句。这种结构下,程序从第一条语句开始执行,然后按照顺序依次执行下一条语句,直到执行完所有语句或遇到其他控制结构为止。    顺序结构的特点是简单直观......
  • Python基于PyQt5和卷积神经网络分类模型(ResNet50分类算法)实现生活垃圾分类系统GUI界
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景在当今社会,随着人们对环境保护意识的增强以及科技的快速发展,智能化的垃圾分类系统成为了一个热门的研究方向。结合深度学习技术,尤其是先进的图像识......
  • python中如何写ssh登录
    python实现ssh远程登录# 测试过程中,比较常用的操作就是将DUT(待测物)接入网络中,然后远程操控对DUT,# 使用SSH远程登陆到主机,然后执行相应的command即可# python 代码如下:# paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的......