【Python】大数相乘

思路:

1. 把数据放到列表中,即list1和list2。

2. 每个list1列表中的第i个元素,与list2列表中的第j个元素相乘,把对应乘积的结果放到下标为(i+j)的列表中。

3. 如果该位的结果大于10,则向后进1。 

def list2str(li):
    while li[0] == 0:
        del li[0]
    res = ''
    for i in li:
        res += str(i)
    return res

def multi(stra, strb):
    aa = list(stra)
    bb = list(strb)
    lena = len(stra)
    lenb = len(strb)
    result = [0 for i in range(lena + lenb)]
    for i in range(lena):
        for j in range(lenb):
            result[lena - i - 1 + lenb - j - 1] += int(aa[i]) * int(bb[j])
    for i in range(len(result) - 1):
        while result[i] >= 10:
            result[i + 1] += result[i] // 10
            result[i] = result[i] % 10
    return list2str(result[::-1])

if __name__ == '__main__':
    print('请输入两个参数')
    str1 = input()
    str2 = input()
    if str1.isdigit() and str2.isdigit():
        res = multi(str1, str2)
        print('multi', res)
        #print('ok', int(res) - int(str1) * int(str2))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值