大整數乘法 陣列實現

2021-07-31 03:32:02 字數 866 閱讀 8799

實現思路:按照乘法規則,乘數和被乘數分別是,num1,num2。按照從後往前的順序遍歷num1,num2中的每一位上數字,首選取num2的最後一位分別於num1上的每一位相乘,將得到的結果儲存在陣列ret中,在之後的每一次遍歷開始,使得ret都是從上一次開始位置減一出從新開始,並且執行對應位置上的自加操作。最後得到ret,從後往前遍歷ret,遇見大於等於10的數字,將其商進製,餘數保留。經過一次遍歷得到最終乘數。並且考慮首位是否為零的情況。如果為零,則跳過輸出,繼續下面的輸出,輸出最終結果

#include

#include

using namespace std;

#define n 14

//int *multi(int* num1, int size1, int* num2, int size2)

////}//

//for (int i = 0; i < size; i++)

////}//

cout << endl;

//return ret;

////}

int main(int argc, char** argv);

int num2[n] = ;

//int* ret = multi(num1, n, num2, n);

int ret[2 * n] = ;

int n = 2 * n - 1;

for (int i = n-1; i >=0 ; i--)

}for (int i = 2*n-1; i >=0 ; i--)

}for (int i = 0; i< n*2; i++)

cout << ret[i];

}return 0;

}

大整數加法(陣列實現)

實現任意範圍的兩個整數的加法 整數的範圍用 int 型的變數無法表示 大整數加法。實現任意範圍的兩個整數的加法 整數的範圍用 int 型的變數無法表示 void addsuper b 50 rst 50 p int lena,lenb,max,min,tmp int while gets a nul...

大整數加法 陣列處理

求兩個不超過200位的非負整數的和。有兩行,每行是乙個不超過200位的非負整數,可能有多餘的前導0。一行,即相加後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。22222222222222222222 33333333333333333333 55555555555...

C 實現大整數乘法

演算法競賽入門經典 這本書並沒有對大數乘法實現,所以自己補充了一下,乘法的實現很簡單,就是再其資料結構基礎上把每寬為8位的十進位制數看成多項式的係數,vector的下標看成多項式的指數,然後再對應相乘相加就可以了,注意係數超過8位 將超八位的補分進製。我這裡是笛卡爾相乘。一般來說是夠用的。但其實多項...