pyhton大数相乘

python大数相乘: python大数相乘,时间复杂度O(n^2) 1、把数据扔到list里然后逆转,list顺序0~n对应个位、十位... 2、创建存储结果list,长度默认为两个被乘数长度之和 3、按位相乘,相同竖线位置累加 4、结果list从0位开始遍历,如果大于9进位 5、结果逆序

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@Time  : 2019/2/15 21:57
#@File  : multiply_test.py
def mul(n1,n2):
    n1.reverse()
    n2.reverse()
    n3=[]
    print n1,n2
    for i0 in xrange(len(n1)+len(n2)):
        n3.append(0)
    for i1 in xrange(len(n1)):
        for i2 in xrange(len(n2)):
            n3[i1+i2] += n1[i1]*n2[i2]
    for i3 in xrange(len(n3)):
        if(n3[i3]>9):
            n3[i3+1] += n3[i3]/10
            n3[i3] = n3[i3]%10
    n3.reverse()
    return n3
print mul([2,4,5,6,6],[4,5,2,0,5,3])

[6, 6, 5, 4, 2] [3, 5, 0, 2, 5, 4] [1, 1, 1, 0, 5, 1, 3, 3, 9, 9, 8]

Process finished with exit code 0

转载于:https://my.oschina.net/donngchao/blog/3010719

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值