本文已参与「新人创作礼」活动,一起开启掘金创作之路。
题目来自牛客网的华为机试题库,本题目为中等题HJ57 高精度整数加法
HJ57 高精度整数加法
描述
输入两个用字符串 str 表示的整数,求它们所表示的数之和。
数据范围: 1≤len(str)≤10000
输入描述:
输入两个字符串。保证字符串只含有'0'~'9'字符
输出描述:
输出求和后的结果
示例1
输入:
9876543210
1234567890
输出:
11111111100
代码
python写很简单,但是好像不是那么回事儿
while True:
try:
s1 = int(input())
s2 = int(input())
print(s1+s2)
except:
break
好像考察的是这个
while True:
try:
s1 = input()[::-1]
s2 = input()[::-1]
j = 0
summ = 0
re = ''
for i in range(max(len(s1),len(s2))):
if i < len(s1):
l1 = int(s1[i])
else:
l1 = 0
if i < len(s2):
l2 = int(s2[i])
else:
l2 = 0
summ = (j + l1 + l2) % 10
j = (j + l1 + l2) // 10
re = str(summ) + re
if j > 0:
re = str(j) + re
print(re)
except:
break
解析
这个题啊,刚刚看到的时候觉得很简单啊,不就是把读入的字符串转化直接成Int类型,转化之后就可以直接加起来了吗,和之前那个四则运算比起来好简单啊,又简单又直接,送分题嘛。
但是后来一想,这可是一个中等题,应该不是想让我这么写吧。后来想到也许是想让我们把字符串拆开加,从个位开始相加(要考虑进位的问题),这样这个题才有难度,才能考验人啊
具体过程:
1.读入字符串,并且为了加起来方便,把字符串转化成倒序
2.按顺序把每一位加起来,summ保存这一数位的值,j保存进位的值,把summ组合进re里
3.加到最后一位的时候要记得也许有剩下的进位,不要拉下
4.re就是两个数加和的结果,输出即可了
中等题快写完了,哈哈哈哈哈