第五天:《LeetCode一天一例》-----大数加法(python实现)

大数加法

  题目: a = '543425435465473423038950284590702985902890670982032850808403649038502802859285249045'

              b = '890795609630592689208605865987690876939065989028928905820685208609820695'

              给定上述两个数,编程实现两个数的求和。  虽然,有的人会说,python的int型包含c++中的long int  根本不需要这样的方法,但是,给出的数超过long int 时,就必须这样求解了。

 分析:

        想像我们求加法的过程。。首先从低位算起,两数如果相加小于10,则直接将相加的结果放下输出结果的对应位置上,如果两个数结果大于10,这时,必须考虑进位,即:将加的结果对10整除(舍弃余数即:// ),放在(输出结果)前一位,将加的结果对10取余数放在输出结果的对应位置。

      这里我们还需将位数短的那个填充零,让其位数相等,以免运算时越界。。如果还不是很清楚,看看下面的代码。 代码中有详细的注释

代码实现:

def big_data_add(a, b):
    # 1.先获取两个中最大的长度,然后将短进行补充,使长度一致
    max_len = len(a) if len(a) > len(b) else len(b)

    a = a.zfill(max_len)
    b = b.zfill(max_len)
    # 输出看看  我们发现长度一致
    # print(a)
    # print(b)
    a = list(a)
    b = list(b)
    result = [0 for i in range(max_len+1)]   # 这里加1主要是考虑到两数加起来可能比之前的数还多一位

    for i in range(max_len-1, -1, -1):
        temp = int(a[i]) + int(b[i])
        if temp >= 10:
            # 这里result是i+1  是因为result的长度比max_len长度长
            result[i+1] += temp % 10
            result[i] += temp // 10
        else:
            result[i+1] += temp

    return result

if __name__ == '__main__':
    # 首先定义了两个数  用字符串给出
    a = '543425435465473423038950284590702985902890670982032850808403649038502802859285249045'
    b = '890795609630592689208605865987690876939065989028928905820685208609820695'
    c = ''
    result = big_data_add(a, b)
    for i in range(0, len(result)):
        c += str(result[i])
    print('{}\n + {} \n = {}'.format(a, b, c))

输出结果:

全部评论

相关推荐

牛客928043833号:在他心里你已经是他的员工了
点赞 评论 收藏
分享
05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
虽然大家都在劝退读研,说读研以后也是打工,不如本科直接去打工,但随着现在研究生越来越多,很多企业招聘要求就会变成研究生起招,本科投递简历就会被卡,横向比较时也会因为"本科学历比不上研究生学历"被筛掉,而且你没发现劝退读研的基本都是读完研的人吗?而且进体制、国企等,研究生也比本科生升的快,他们拿着研究生文凭劝你一个本科生,可别当真了
炬火初现:肯定是说本科能有好工作或者满意的可以不读研啊,现在本科能找到好工作的那个不优秀,大学四年赛高中,而且还要和学校斗智斗勇,这种时候自然有的选,要是只是觉得一辈子混口饭吃,大概率也考不上研,或者考上又浑浑噩噩三年,也难说。 而且考研所谓的优势说实话是你用差不多四年的时间成本(考一年,读三年)换过来的,而且还未必读完有今年的就业市场,当然不能随便决定读。 再还要看专业,一些稀奇古怪的专业说实话根本没有办法创造出什么价值,也没钱赚(如果有爱好,可以适当降低报酬标准)。现在非92的研究生说实话也没啥太多所谓优势,难说。 所以任何时候都要具体情况具体分析,不能一概而论。 一点点小看法。欢迎大家友善讨论。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务