python大數相乘,時間複雜度o(n^2)
1、把資料扔到list裡然後逆轉,list順序0~n對應個位、十位...
2、建立儲存結果list,長度預設為兩個被乘數長度之和
3、按位相乘,相同豎線位置累加
4、結果list從0位開始遍歷,如果大於9進製
5、結果逆序
defmul
(n1,n2):
n1.reverse()
n2.reverse()
n3=print n1,n2
for i0 in xrange(len(n1)+len(n2)):
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實現大數相乘
大數相乘使用陣列list記錄資料,類似小學時做乘法計算時豎著的計算方法 1 把資料讀入陣列,並實現陣列逆轉。陣列順序0 n與位數個位 十位.一致 2 建立儲存結果陣列,長度預設為兩個被乘數長度之和 3 按位相乘並儲存在對應的結果陣列中 5 執行進製操作,結果陣列從0開始,如果大於9則進製到下一位並獲...
大數相乘 大數相加
大數相乘 大數相乘 1 include includeint main int ans i while lb 0 int cnt j for i 0 i 0 i if e i break 去除前面多餘的0 if i 1 else 當結果是0的時候 printf 0 printf n return 0...
大數相乘演算法
啥也說,直接給 高精度的乘法,乘數的位數沒有限制,小數點後面的位數也沒有限制 輸入引數 乘數 str1,str2 輸出引數 str str1 str2 返回值型別 string string large mult string str1,string str2,string str 輸出引數 ass...