数字列表加法操作相关题目描述及相关代码

This commit is contained in:
2026-01-09 12:44:40 +08:00
parent e956855b2d
commit 02d647652e
2 changed files with 74 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
num1 = [1, 8, 9]
num2 = [2, 1]
res = []
carry = 0
i = -1
lens1 = len(num1)
lens2 = len(num2)
min_index = min(lens1, lens2) * -1
while i >= min_index:
val = num1[i] + num2[i] + carry
if val >= 10:
carry = 1
res.insert(0, val - 10)
else:
carry = 0
res.insert(0, val)
i -= 1
if lens1 != lens2:
if lens1 > lens2:
last = num1
min_index = lens1 * -1
else:
last = num2
min_index = lens2 * -1
while i >= min_index:
val = last[i] + carry
if val >= 10:
carry = 1
res.insert(0, val-10)
else:
carry = 0
res.insert(0, val)
i -= 1
if carry:
res.insert(0, carry)
print(res)

View File

@@ -0,0 +1,31 @@
# 数字列表加法操作
## 需求
给定一个数字列表每个数字范围0-9
数字列表:
    数字189使用列表表示num1 = [1, 8, 9]
    数字21使用列表表示num2 = [2, 1]
    num1与num2相加结果 [2, 1, 0]
## 题目分析
在CC++等语言中,受限于计算机位数,整数最大值有限制;为了防止越界,导致计算结果错误,会使用巨型数组替代数字进行计算;
计算规则:
    1. 计算最低位,并检查是否有进位;
    2. 计算次低位,检查是否有进位;
    3. 如果两个数字列表长度不同,将为完成计算的插入到前面,并检查进位;
逻辑图如下:
<img src="file:///Users/wangyu/Library/Application%20Support/marktext/images/2026-01-08-17-08-29-image.png" title="" alt="" width="518">