python大数相乘,时间复杂度O(n^2)
1、把数据扔到list里然后逆转,list顺序0~n对应个位、十位...
2、创建存储结果list,长度默认为两个被乘数长度之和
3、按位相乘,相同竖线位置累加
4、结果list从0位开始遍历,如果大于9进位
5、结果逆序
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])
#[2,4,5,6,6]*[4,5,2,0,5,3]=[1, 1, 1, 0, 5, 1, 3, 3, 9, 9, 8]
python大数相乘
猜你喜欢
转载自blog.csdn.net/acttell/article/details/80038274
今日推荐
周排行