版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lnotime/article/details/82312573
用列表来表示整数,比如[1,2,3]表示123,[9,9]表示99。
加法:
def add(num1: list, num2: list) -> list:
"""加法"""
l1, l2 = len(num1), len(num2)
l = max(l1, l2) + 1
num1 = [0] * (l - l1) + num1 # 让两个数字长度相等,方便操作;都多一位0,方便进位
num2 = [0] * (l - l2) + num2
c = [] # 按位相加的结果,倒序存储
j = 0 # 记录进位
for i in range(l - 1, -1, -1): # 个位开始相加
temp = num1[i] + num2[i] + j # 中间值
c.append(temp % 10)
j = temp // 10
return c[-2 + c[-1]::-1] # 去掉最高位的0
def _test():
print(add([0], [0]), 0 + 0) # [0] 0
print(add([9, 9, 9], [0]), 999 + 0) # [9, 9, 9] 999
print(add([9, 9, 9], [1]), 999 + 1) # [1, 0, 0, 0] 1000
print(add([1, 2], [3, 2, 1]), 12 + 321) # [3, 3, 3] 333
print(add([7, 7, 7, 5], [7, 7, 7]), 7775 + 777) # [8, 5, 5, 2] 8552
if __name__ == '__main__':
_test()
ddddd:减法、乘法、除法;必须先定义好正数和负数怎么表示,定义好负数后可能加法还得重写。