博客
关于我
L1-009 N个数求和 (20 分)
阅读量:381 次
发布时间:2019-03-05

本文共 1292 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要计算N个有理数的和,并将结果以最简形式输出。最简形式包括整数部分和分数部分,分数部分必须是小于分母且没有公因子的分数。

方法思路

  • 读取输入:首先读取一个正整数N,然后读取N个有理数。
  • 处理分数:将每个有理数作为分子和分母处理,确保分母为正数。
  • 逐次相加:将每个分数逐次加到总和中,使用交叉相乘的方法进行加法运算。
  • 化简分数:在每次相加后,计算分子和分母的最大公约数(GCD),将分子和分母同时除以GCD以保持分数的最简形式。
  • 分离整数部分和分数部分:将总和分成整数部分和分数部分,分别处理输出。
  • 解决代码

    import mathn = int(input())fractions = input().split()total_numerator = 0total_denominator = 1for frac in fractions:    a_str, b_str = frac.split('/')    a = int(a_str)    b = int(b_str)        # 确保分母为正数    if b < 0:        a = -a        b = -b        # 计算新的分子和分母    new_numerator = total_numerator * b + a * total_denominator    new_denominator = total_denominator * b        # 计算gcd    g = math.gcd(abs(new_numerator), abs(new_denominator))        total_numerator = new_numerator // g    total_denominator = new_denominator // g# 处理整数部分和分数部分integer_part = total_numerator // total_denominatorremainder = total_numerator % total_denominatorif remainder == 0:    print(integer_part)else:    if integer_part == 0:        print(f"{remainder}/{total_denominator}")    else:        print(f"{integer_part} {remainder}/{total_denominator}")

    代码解释

  • 读取输入:使用input()读取N和分数字符串。
  • 初始化总和:将总和初始化为0/1。
  • 处理每个分数:将每个分数的分子和分母读取为整数,并确保分母为正数。
  • 交叉相乘和相加:计算新的分子和分母,然后化简分数。
  • 分离整数部分和分数部分:计算整数部分和余数,根据要求格式化输出结果。
  • 这个方法确保了在处理大数时不会溢出,并且每次相加后都保持分数的最简形式,从而保证了结果的准确性。

    转载地址:http://tswzz.baihongyu.com/

    你可能感兴趣的文章
    Typescript 学习笔记六:接口
    查看>>
    【ASP.NET】ASP.NET中权限验证使用OnAuthorization实现
    查看>>
    02、MySQL—数据库基本操作
    查看>>
    OpenJDK1.8.0 源码解析————HashMap的实现(一)
    查看>>
    MySQL-时区导致的时间前后端不一致
    查看>>
    2021-04-05阅读小笔记:局部性原理
    查看>>
    go语言简单介绍,增强了解
    查看>>
    python file文件操作--内置对象open
    查看>>
    架构师入门:搭建基本的Eureka架构(从项目里抽取)
    查看>>
    MongoDB 快速扫盲贴
    查看>>
    修复搜狗、360等浏览器不识别SameSite=None 引起的单点登录故障
    查看>>
    EXTJS4.2——10.Tab+Iframe
    查看>>
    WEB基础——AJAX
    查看>>
    one + two = 3
    查看>>
    PHP serialize && unserialize Security Risk Research
    查看>>
    sctf_2019_easy_heap
    查看>>
    ASP.NET Core分布式项目实战(oauth2 + oidc 实现 server部分)--学习笔记
    查看>>
    PyQt5之音乐播放器
    查看>>
    Redis进阶实践之十八 使用管道模式提高Redis查询的速度
    查看>>
    SQL注入
    查看>>