ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

蓝桥杯基础练习:高精度加法解析

2022-01-05 23:04:58  阅读:116  来源: 互联网

标签:高精度 sum list 整数 蓝桥 ist1 ist2 len 加法


高精度加法的核心因为整数比较大,计算机能表示的整数范围有限,所以需要使用数组表示一个整数。方法是:定义一个数组a,使用a[0]来表示整数的个位,a[1]来表示十位,依次类推。在加法过程中要注意进位,逢十进一。 

实现代码如下


# 2022.1.5
# 蓝桥杯基础练习
# 试题名称:高精度加法
# 问题描述:输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。

ist1 = list(input())  
ist2 = list(input())
ist1 = list(map(int, ist1))             # 将字符类型的元素转化为整数类型
ist2 = list(map(int, ist2))
ist1 = ist1[::-1]                       # 列表逆置
ist2 = ist2[::-1]
if(len(ist1) > len(ist2)):
    ist2 = ist2 + [0]*(len(ist1) - len(ist2)) # 两个整数位数不同,少的用0补充
else:
    ist1 = ist1 + [0]*(len(ist2) - len(ist1)) # 两个整数位数不同,少的用0补充
n = [len(ist1), len(ist2)]
sum = [0] * max(n) + [0]              # 两个n位整数的和可能是n+1位的整数
for i in range(max(n)):
    sum[i] = ist1[i] + ist2[i]        # 个位和个位相加,十位和十位相加...
for i in range(max(n)+1):             # 在这个循环中,进行进位
    if(sum[i] >= 10):  
        sum[i+1] = sum[i+1] + 1  # 逢十进一
        sum[i] = sum[i] - 10
sum = sum[::-1]                     # 列表再逆置,变成正常顺序
if(sum[0] == 0):                    # 因为sum有n+1位,所以第一个元素有可能为0
    sum.pop(0)                      # 如果为0,则删除
for i in sum:
    print(i,end="")                 # 打印输出结果

需要注意的点

  1. 两个位数不同的整数相加时,位数少的整数需要补0
  2. 两个位数为n的整数相加时,它们的和有可能为n+1位,所以sum列表长度需要是n+1

标签:高精度,sum,list,整数,蓝桥,ist1,ist2,len,加法
来源: https://blog.csdn.net/one_rookie/article/details/122333576

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有