两个20位数字的乘法

#两个20位数字的乘法
#-*- coding=utf-8 -*-
import sys

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):
        if result[i] >= 10:
            result[i + 1] += result[i] // 10
            result[i] = result[i] % 10
    return list2str(result[::-1])


if __name__ == '__main__':
    if len(sys.argv) != 3:
        print('请输入两个参数')
        # exit()
    # a = sys.argv[1]
    # b = sys.argv[2]
    a = '20000000000000000000'
    b = '30000000000000000000'
    res = multi(a, b)
    print('multi', res)
    print('ok', int(a) * int(b))

######################################################################################

#-*- coding=utf-8 -*-

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

def multi(str1, str2):
    a = list(str1)
    b = list(str2)
    result = [0 for i in range(len(str1) + len(str2))]
    # result = [0 for i in range(len(str1) + len(str2))]
    for i in range(len(str1)):
        for j in range(len(str2)):
            result[len(str1) - i - 1 + len(str2) - j - 1] += int(a[i]) * int(b[j])
    for i in range(len(result) - 1):
        if result[i] >= 10:
            result[i + 1] += result[i] // 10
            result[i] = result[i] % 10
    return list2_str(result[::-1])

if __name__ == '__main__':
    c = input()
    d = input()
    res = multi(c, d)
    print(res)

#################################################################################################

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值