运算进位 | 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