在32位系统下,整形最大保存数据为正负2147483647,故当两个数据相加有可能会出现溢出的情况,此时就需要注意数据的大小判定,避免出错

解决如下问题:https://www.hackerrank.com/challenges/a-very-big-sum/problem

#!/bin/python3

import sys

def aVeryBigSum(n, ar):
    # Complete this function
    sumall = 0
    num = 0
    for i in [0,1,2,3,4]:
        sumall = sumall + ar[i]
        while sumall > 1000000000:
            num += 1
            sumall = sumall - 1000000000
            #print(sumall)
    len_num = 9-len(str(sumall))
    answer = str(num) + "0"*len_num + str(sumall)
    return answer
n = int(input().strip())
ar = list(map(int, input().strip().split(' ')))
result = aVeryBigSum(n, ar)
print(result)

 但是以上仅是针对某一类型数据,并没有做到对所有数据的支持,还有一小部分加法形式例如 2000+2147483600依旧会溢出

如下再次修改,对被加数进行验证即可:

#!/bin/python3

import sys

def aVeryBigSum(n, ar):
    # Complete this function
    sumall = 0
    num = 0
    for i in [0,1,2,3,4]:
        add_num = ar[i]
        while add_num > 1000000000:#判定被加数大小,避免溢出
            num += 1
            add_num = add_num - 1000000000
        sumall = sumall + add_num
        while sumall > 1000000000:#当数量过多也会溢出,避免溢出
            num += 1
            sumall = sumall - 1000000000
    len_num = 9-len(str(sumall))
    answer = str(num) + "0"*len_num + str(sumall)
    return answer
n = int(input().strip())
ar = list(map(int, input().strip().split(' ')))
result = aVeryBigSum(n, ar)
print(result)

 如上已经可以做到32位系统下的长整型加法

如有错误及优化 望指正