博客
关于我
7-38 数列求和-加强版 (20 分)(解析,数组加法)
阅读量:569 次
发布时间:2019-03-09

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

为了解决这个问题,我们需要计算一个数列的和,该数列由给定的数字A重复N次组成。由于N可以达到十万,我们需要一个高效的方法来计算这个和。

方法思路

我们可以通过分析数列的结构,找到一个数学上的规律来优化计算。每个数列中的项都是由A重复若干次组成的数。我们可以将每个位置上的贡献独立计算,然后将这些贡献累加起来。

具体步骤如下:

  • 初始化一个数组来存储每一位的总贡献。
  • 对于每一位i(从0开始,个位开始),计算该位上的贡献。
  • 将贡献加到当前位上,并处理进位。
  • 最后,将数组转换为字符串,得到最终的和。
  • 这种方法避免了逐个计算每一项的复杂性,而是直接计算每一位上的贡献,从而高效地得到结果。

    解决代码

    A, N = map(int, input().split())if N == 0:    print(0)else:    result = []    carry = 0    for i in range(N):        contrib = A * (N - i)        current = contrib + carry        digit = current % 10        carry = current // 10        result.append(digit)        while carry > 0:        digit = carry % 10        carry = carry // 10        result.append(digit)        result = result[::-1]    print(''.join(map(str, result)))

    代码解释

  • 读取输入:从标准输入读取两个整数A和N。
  • 处理特殊情况:如果N为0,直接输出0。
  • 初始化变量:创建一个空列表result来存储每一位的数字,carry变量用于处理进位。
  • 循环计算贡献:对于每一位i,计算该位的贡献,更新当前位的值和进位。
  • 处理进位:在处理完所有位后,继续处理可能的最高位进位。
  • 转换结果:将结果列表反转,转换为字符串并输出。
  • 这种方法确保了我们能够高效地计算大数的和,避免了直接处理非常大的数,适用于N很大的情况。

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

    你可能感兴趣的文章
    MySQL 多表联合查询:UNION 和 JOIN 分析
    查看>>
    MySQL 大数据量快速插入方法和语句优化
    查看>>
    mysql 如何给SQL添加索引
    查看>>
    mysql 字段区分大小写
    查看>>
    mysql 字段合并问题(group_concat)
    查看>>
    mysql 字段类型类型
    查看>>
    MySQL 字符串截取函数,字段截取,字符串截取
    查看>>
    MySQL 存储引擎
    查看>>
    mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
    查看>>
    MySQL 存储过程参数:in、out、inout
    查看>>
    mysql 存储过程每隔一段时间执行一次
    查看>>
    mysql 存在update不存在insert
    查看>>
    Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
    查看>>
    Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
    查看>>
    Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
    查看>>
    Mysql 学习总结(89)—— Mysql 库表容量统计
    查看>>
    mysql 实现主从复制/主从同步
    查看>>
    mysql 审核_审核MySQL数据库上的登录
    查看>>
    mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
    查看>>
    mysql 导入导出大文件
    查看>>