演算法思路 高精度乘法(大整數與int相乘)

2021-09-25 05:22:40 字數 423 閱讀 8828

這裡選擇相對簡單的int型整數和大整數相乘,來考慮其演算法的思路:

按照小學算術的知識,兩個數相乘,可以拆開看成乙個數固定,另乙個數從個位開始,依次和這個數相乘;然後沒左移一位,相應的結果也左移一位,最後相加。(其實硬體實現加法,也是基於這個最基本的原理)

所以,在演算法的實現上就可以這麼來考慮:

比如:711×21

那麼個位數1 ×711 = 711,用10取模得到1,就是最後的個位結果,用10相除,得到71,這個作為「進製」進入下一位的相乘。(注意這一點是和硬體實現不一樣的!)

再看十位2 × 711,然後加上71 = 1422 + 71 = 1493,同樣用10來取模,得到結果的十位為3,用10來除,得到進製149,因為沒有下一位相乘了。所以最後的結果局勢14931。

同樣,更大的數字也可如此推廣。​

高精度計算 大整數乘法

問題描述 求兩個不超過 200 位的非負整數的積。輸入資料 有兩行,每行是乙個不超過 200 位的非負整數,沒有多餘的前導 0。輸出要求 一行,即相乘後的結果。結果裡不能有多餘的前導 0,即如果結果是 342,那麼就不能 輸出為 0342。輸入樣例 12345678900 98765432100 輸...

基礎演算法 高精度 大整數

學習平台 acwing 高精度的數一般比較大,普通的整型變數存不下,所以存在string裡或者char裡 模擬數學的普通加法 len a 10 9 len b 10 9 為了方便地進行進製操作,將大整數的每一位倒著存放在整形陣列int裡 string a,b vectora,b cin a b fo...

演算法 高精度乘法2(高精度乘高精度)

題目描述 高精度乘,求兩個很大的非負整數相乘的結果。輸入 2個非負整數,每個一行,每個整數不超過240位。輸出 乙個整數,表示相乘的結果。例子 為了和演算法對應方便,用上面數乘下面數的方法12 5 2512 5502 5312 5為了運算方便,將上面兩數倒置,得到的結果也為倒序下標0 1234 56...