最近在學習演算法課程,自己寫了一點計算大整數乘法(正數)的**,如果有不對的地方希望能請大家指點一下我,謝謝!
**片
.
#include
"pch.h"
#include
#include
#include
using
namespace std;
//通過鍵盤輸入獲取要計算的大整數
void
input
(string &str1, string &str2)
while
(true)}
//兩個n位整數相加
void
d_plus
(int p,
int q,
int c,
int n)
else c1 =0;
}}//兩個2位整數相乘
void
d_product
(int p,
int q,
int c)
; t1 = p[0]
* q[0]
; c[1]
= t1 %10;
c[0]= t1 /10;
t2 = p[1]
* q[1]
; c[3]
= t2 %10;
c[2]= t2 /10;
r[1]=
(p[0
]+ p[1]
)*(q[0
]+ q[1]
)- t1 - t2;
r[2]= r[1]
%10; r[1]
= r[1]
/10;d_plus
(c, r, c,4)
;}//兩個n位整數相減
void
d_mins
(int p,
int q,
int n)
else c =0;
}}void
integer_product
(int p,
int q,
int r0,
int n)
delete
r1;
delete
r2;
delete
r3;
delete
r4;
}void
print
(int c,
int n,
int temp)
//輸出計算結果
cout << endl;
}int
main()
int*a =
newint
[n];
//乘數a
int*b =
newint
[n];
//乘數b
int*c =
newint[2
* n]
;//c陣列初始化
temp =
2* n - n1 - n2;
for(
int i =
0; i < n; i++
)//將字串轉換為整型陣列,同時補0
integer_product
(a, b, c, n)
;//計算
print
(c,2
* n, temp)
;//輸出
delete
a;delete
b;delete
c;//刪除陣列
system
("pause");
return0;
}
大整數乘法 分治法
import sys def add n1,n2 字串加法 n1 n1 1 n2 n2 1 補齊到和的最大位數 相加後可能在最後進一位,所以末尾補乙個0 if len n1 1 and sum 0 0 sum sum 1 return sum def muti x1,x2 xi 123435 5 分...
分治 大整數乘法
第一次自己完整寫對,多多指教 演算法思路 分治。第一步 經過預處理將兩個整數變為長度一樣的兩個數 短的在前面補0 第二部 把兩個大整數都平分為前後兩部分 第三部 按以下公式計算 實現大數乘法之前實現了大數加減法 公式 x a 10 n 2 b y c 10 n 2 d xy ac 10 n a b ...
分治 大整數乘法
問題描述 設x和y是兩個n位的二進位制整數,現在要計算它們的乘積xy,傳統方法計算每2個1位數乘法或加法都看作一步運算,這樣需要o n2 次位運算,代價太高,現在運用分治法設計乙個更有效的大整數乘法演算法。當n 1時,計算x y就是一次位乘。現在對x y進行劃分,把x和y各分為兩段,每段長為n 2 ...