思路:将两个大数分类按位放进两个数组中,以最长的字符串为准不足的补 0 ,然后按位相加,之后反序遍历结果数组,如果需要进位,则当前位数据对 10 求余数,然后向前进一位 。
代码实现如下:
def big_num_add():
s1 = raw_input("please enter a number:")
s2 = raw_input("please enter another number:")
s1_arr = []
s2_arr = []
# 数组对齐空位补0
if len(s1) > len(s2):
for i in range(0, len(s1)-len(s2)):
s2_arr.append(0)
if len(s2) > len(s1):
for i in range(0, len(s2)-len(s1)):
s1_arr.append(0)
for i, j in zip(s1, s2):
s1_arr.append(int(i))
s2_arr.append(int(j))
# 按位相加
for index, _ in enumerate(s1_arr):
s1_arr[index] = s1_arr[index]+s2_arr[index]
s1_arr.reverse()
for index, value in enumerate(s1_arr):
if value >= 10:
if ((index+1) < len(s1_arr)):
s1_arr[index+1] += 1
s1_arr[index] = value % 10
s1_arr.reverse()
result_str = ""
for i in s1_arr:
result_str += str(i)
print result_str