演算法 字串大整數相乘

2021-08-21 07:22:14 字數 988 閱讀 1427

題目描述:

給定兩個以字串形式儲存的大整數,要求以字串形式輸出相乘後的結果。

思路:

模擬計算乘法時列豎式的過程,對於兩個字串s1和s2,讓s2的每一位和s1整體相乘,求得一組中間值,然後對中間值做移位操作,最後將移位後的所有中間值相加即可求得最終結果。

問題的關鍵在於實現兩個函式,用於計算兩個字串相加以及字串和單個字元相乘的結果。

//計算兩個字串相加

string myadd(const

string &s1, const

string &s2);

//字串和單個字元相乘

string mymult(const

string &s, const

char c);

//消除結果中多餘的『0』

string & check_num(string &s);

//計算倆個字串的乘積

string mymult(string &s1, string &s2)

return check_num(res);

}string mymult(const

string &s, const

char c)

if(carry > 0)

res.insert(res.begin(), char('0' + carry));

return res;

}string myadd(const

string &s1, const

string &s2)

if(i < 0 && j < 0)

while(i >= 0)

while(j >= 0)

return res;

}string & check_num(string &s)

while(s[0] == '0' && s.size() > 1)

return s;

}

分治演算法 大整數相乘 字串實現

由於網上大部分用分治演算法實現的大整數相乘程式,其輸入乘數竟然設定為int值,實現了分治思想,但實在不能稱其為大整數。本文實現了用字串儲存乘數,並且輸出正確結果。由於演算法未經過大量資料測試,可能還存在問題,歡迎指教討論,求輕踩。演算法分析 下面的函式均為分治函式設定,因為分治後得到的m1,m2,m...

大整數相乘 leetcode 43 字串相乘

有兩個用字串表示的非常大的大整數,算出他們的乘積,也是用字串表示。不能用系統自帶的大整數型別。輸入描述 空格分隔的兩個字串,代表輸入的兩個大整數 輸出描述 輸入的乘積,用字串表示 示例1輸入 72106547548473106236 982161082972751393 輸出708202448296...

演算法之字串相乘

給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...