题解 | #高精度整数加法#

高精度整数加法

http://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6

#1.Python中int型是不限位数的,所以可以直接用int()处理输入,然后直接相加;
#2.用常规的解法就是从各位开始,拿出两个数相加,然后大于10,就往前进1,然后留下个位数;
#3.需要注意的是,先把数组逆序,然后最后的结果再逆序;
while True:
    try:
        num1 = list(input())[::-1]
        num2 = list(input())[::-1]
        result = list()
                
                #这里先判断两个输入,,哪个位数更长
        if len(num1) >= len(num2) :
            temp_long = num1
            temp_short = num2
        else :
            temp_long = num2
            temp_short = num1
                
                #对位数少的数组补0,主要是为了方便后面两两相加的时候,访问数组不越界
        for i in range(len(temp_long) - len(temp_short)):
            temp_short.append('0')

                #进位标识位,默认为0
        flag = 0
        for i in range(len(temp_long)):
            sum = int(temp_long[i]) + int(temp_short[i]) + flag
                        #两数相加大于10,留下各位,进位标识位=1,否则进位标识位=0
            if sum >= 10 :
                result.append(sum-10)
                flag = 1
            else :
                result.append(sum)
                flag = 0
                #最后需要多判断一次,最高位的两数相加是否大于10,如果大于10,则直接最高位=1
        if flag == 1 :
            result.append(1)
    except: break

#结果数组需要逆序输出,因为前面两个输入数组已经逆序了,低位在前,高位在后,结果数组同理
for i in result[::-1]:
    print(i, end='')
        


全部评论

相关推荐

2 2 评论
分享
牛客网
牛客企业服务