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

查看2道真题和解析
