运算进位 | HJ57 高精度整数加法

# 最优解1:Python支持大整数求和
while True:
    try:
        n1 = int(input())
        n2 = int(input())
        print(n1+n2)        # 直接输出整型数字相加之和的结果
    except:
        break

# 最优解2
while True:
    try:
        s1 = list(map(int, input()))[::-1]
        s2 = list(map(int, input()))[::-1]
        res = ""
        i = 0                                    # 遍历指针
        addd = 0                                 # 进位
        summ = 0                                 # 和
        while i < max(len(s1), len(s2)):         # 开始遍历
            a = 0 if i >= len(s1) else s1[i]     # 获取s1中的一位数字
            b = 0 if i >= len(s2) else s2[i]     # 获取s2中的一位数字
            summ = (addd + a + b) % 10           # 计算和
            addd = (addd + a + b) // 10          # 计算进位
            res = str(summ) + res                # 组织到输出字符串中
            i += 1
        if addd > 0:                             # 处理最后一位
            res = "1" + res
        print(res)                               # 输出
    except:
        break

# 我的代码
while True:
    try:
        n1 = input()
        n2 = input()
        n1, n2 = (n2, n1) if len(n2)<len(n1) else (n1, n2)
        u = [0]*(len(n2)+1)
        i = -1
        res = ''
        while i >= -len(n1):
            s = int(n1[i]) + int(n2[i]) + u[i]
            if s > 9:
                u[i-1] = s // 10
                s %= 10
            res += str(s)
            i -= 1
        while i >= -len(n2):
            s = int(n2[i]) + u[i]
            if s > 9:
                u[i-1] = s // 10
                s %= 10
            res += str(s)
            i -= 1
        if u[i] != 0:
            res += str(u[i])
        print(res[::-1])
    except:
        break

用时:35min

华为笔试刷题 文章被收录于专栏

高质量题: 1~40:HJ16,HJ22,HJ24,HJ26,HJ27,HJ28,HJ35,HJ37,HJ39; 40~80:HJ41,HJ42,HJ43,HJ44,HJ48,HJ50,HJ52,HJ53,HJ57,HJ61,HJ63,HJ64,HJ70,HJ71,HJ74,HJ77; 80~108:HJ82,HJ85,HJ88,HJ89,HJ93,HJ95,HJ98,HJ103,HJ107

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务