蓝桥杯基础练习:高精度加法解析
2022/1/5 23:38:03
本文主要是介绍蓝桥杯基础练习:高精度加法解析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
高精度加法的核心:因为整数比较大,计算机能表示的整数范围有限,所以需要使用数组表示一个整数。方法是:定义一个数组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="") # 打印输出结果
需要注意的点:
- 两个位数不同的整数相加时,位数少的整数需要补0
- 两个位数为n的整数相加时,它们的和有可能为n+1位,所以sum列表长度需要是n+1
这篇关于蓝桥杯基础练习:高精度加法解析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南