牛客网学习笔记(HJ57 高精度整数加法)

116 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

题目来自牛客网的华为机试题库,本题目为中等题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就是两个数加和的结果,输出即可了

中等题快写完了,哈哈哈哈哈