C 大數相乘

2021-08-21 10:12:07 字數 998 閱讀 6072

/*

*2018.7.14修改,**在之前除錯時出現錯誤,現已更正。

*/總結一下前段時間寫的大數模板

原理就是用string型代替int(double什麼的或者 unsigned long long int),然後逐個分析字元,用對應字元所表示的數字相乘來重新寫乘法。

首先是宣告兩個字元a[maxn + 5], b[maxn + 10];陣列來儲存我們鍵入的兩個大數。眾所周知,乘法是兩個數尾部對齊從後往前乘的,所以又要宣告兩個整型陣列x[maxn + 10], y[maxn + 10]來倒序儲存每個數字(字元),再宣告乙個更大的整型陣列z[maxn * 2 + 10](初始化為0)來儲存前兩個整型陣列x, y的乘積(每個乘積都可能大於等於10,也就是牽扯到進製的問題,但是先占用乙個陣列下標來儲存,之後再進製)。

第二步,遍歷整個z陣列,大於等於10的求出進製多少位加到下一位,然後再對10取餘,求出個位數來替代一開始大於等於10的數。

第三步,重新倒序遍歷z陣列,去掉首字元為0的位然後輸出。

**為:

#includeusing namespace std;

const int maxn = 100;

char a[maxn + 5], b[maxn + 10];

int x[maxn + 10], y[maxn + 10], z[maxn * 2 + 10];

int main ()

for(int j = 0, i = len2 - 1; i >= 0; i--)

for(int i = 0; i < len1; i++)

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

} int i;

for(i = maxn * 2; i > 0; i--)

else break;

} for(;i >= 0; i--)

cout << endl;

return 0;

}

c 大數相乘

using system using system.collections.generic using system.text namespace numbers if ch1.length 0 return true return true public static string getmuti...

c語言大數相乘

大數相乘的方法很多,在這裡我就介紹乙個理解和寫起來比較方便的 思想和大數相加差不多!為什麼大數相乘相較於大數相加比較難呢?以 n m 位的數為例 假設兩個大數的字元陣列分別為 s1,s2 答案陣列為 a 遍歷是比較簡單的,主要是進製的問題,我們可以先不考慮進製,將 s1 的第 i 位與 s2 的第 ...

大數相加 大數相乘 C

最簡單的思路是直接用int型陣列儲存大數的每一位,程式比較容易實現,但是效率稍低,直接上 include includeusing namespace std class bign bign const bign t bign operator const bign t bign operator ...