大整数相加和大整数相乘

大整数运算是我们经常会碰到的算法面试题之一。大整数运算往往会导致整形溢出而不能在ide直接通过四则运算运行。

下面是python3写的大整数相乘和大整数相加函数。原理都较为相似,模拟手写演算的场景从后往前计算并且考虑进位。

def multy(n1,n2):
    n1=str(n1)[::-1]
    n2=str(n2)[::-1]
    n3=[]
    for i in range(len(n1+n2)):
        n3.append(0)
    for i in range(len(n1)):
        for j in range(len(n2)):
            n3[i+j]+=int(n1[i])*int(n2[j])
    for i in range(len(n1+n2)):
        if n3[i]>=10:
            n3[i+1]+=n3[i]//10
            n3[i]%=10
    return n3[::-1]
def plus(n1,n2):
    n1=str(n1)[::-1]
    n2=str(n2)[::-1]
    n3=[]
    for i in range(max(len(n1),len(n2))+1):
        n3.append(0)
    jinwei=0
    for i in range(min(len(n1),len(n2))):
        dangqian=(jinwei+int(n1[i])+int(n2[i]))
        if dangqian>=10:
            jinwei=dangqian//10
            dangqian=dangqian%10
        n3[i]+=dangqian
    i+=1
    if len(n1)>=len(n2):
        while(i<len(n1)):
            dangqian = (jinwei + int(n1[i]))
            if dangqian >= 10:
                jinwei = dangqian // 10
                dangqian = dangqian % 10
            n3[i] += dangqian
            i+=1
    else:
        while (i < len(n2)):
            dangqian = (jinwei + int(n2[i]))
            if dangqian >= 10:
                jinwei = dangqian // 10
                dangqian = dangqian % 10
            n3[i] += dangqian
            i+=1
    return n3[::-1]
print(multy(99,99))
print(99*99)
print(plus(15,250123))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值