實現思路:按照乘法規則,乘數和被乘數分別是,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位 將超八位的補分進製。我這裡是笛卡爾相乘。一般來說是夠用的。但其實多項...