91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中怎么實現大數相乘算法

發布時間:2021-08-09 16:41:03 來源:億速云 閱讀:131 作者:Leah 欄目:編程語言

這篇文章給大家介紹C++中怎么實現大數相乘算法,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

首先說一下乘法計算的算法:同樣是模擬人工計算時的方法。

從低位向高位乘,在豎式計算中,我們是將乘數第一位與被乘數的每一位相乘,記錄結果之后,用第二位相乘,記錄結果并且左移一位,以此類推,直到計算完最后一位,再將各項結果相加,得出最后結果。計算的過程基本上和小學生列豎式做乘法相同。為編程方便,并不急于處理進位,而將進位問題留待最后統一處理。我們以125*53為例來說明計算過程:

1、先算125*3,3*5得到15個1,3*2得到6個10,3*1得到3個100,下面是存儲結果的數組的形式

2、接下來算125*5,5*5得到25個10,2*5得到10個100,5*1得到5個1000;

3、乘法過程完畢。接下來從 a[0]開始向高位逐位處理進位問題。a[0]留下5,把1 加到a[1]上,a[1]變為32 后,應留下2,把3 加到a[2]上……最終使得a里的每個元素都是1 位數,結果就算出來了

結果就是6625。

總結一個規律:即一個數的第i 位和另一個數的第j 位相乘所得的數,一定是要累加到結果的第i+j 位上。這里i, j 都是從右往左,從0 開始數。即:ans[i+j] = a[i]*b[j];

另外進位時要處理,當前的值加上進位的值再看本位數字是否又有進位;前導清零。

下面是C++代碼實現:

#include<iostream>#include<string>#include<cstdio>  using namespace std;#define MAX 1010   int main(){string std1, std2;cin>>std1>>std2;int length2 = std1.length();int length3 = std2.length();int a[MAX] = {0};int b[MAX] = {0};int result[2 * MAX] = {0};int i = 0, j = 0;//將字符串轉移到數組中,以方便計算 ,注意是倒敘存儲//即字符串123存為321,為的是將低位放在前面方便計算 for(i = length2 - 1, j = 0; i >= 0; i--, j++){a[j] = std1[i] - '0';}for(i = length3 - 1, j = 0; i >= 0; i--, j++){b[j] = std2[i] - '0';}//將結果儲存在 resullt中,result[i + j] = a[i] * b[j]是關鍵算法 for(i = 0; i < length2; i++){for(j = 0; j < length3; j++){result[i + j] += a[i] * b[j];}} //從低位到高位進行進位 for(i = 0; i < (length2+length3); i++){if(result[i] > 9){result[i+1] += result[i]/10;result[i] %= 10; }}//將前導0全部剔掉,比如我們結果是236,在result中//是這樣存儲的63200……我們需要定位到第一個不為零的數,它的位置也就是i ,兩數相乘,位數最多是兩數位數之和 for(i = length2 + lengrh3; i >= 0 ; i--){if(result[i] == 0) continue;else break;}//接著i繼續輸出,就是我們的結果 for(; i >=0; i--)cout<<result[i];return 0;}

關于C++中怎么實現大數相乘算法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

岢岚县| 军事| 葫芦岛市| 博乐市| 沁水县| 辉县市| 湖北省| 沂水县| 杭州市| 阿拉善左旗| 达州市| 阳信县| 吴堡县| 微山县| 崇礼县| 揭东县| 顺义区| 孟津县| 库尔勒市| 旌德县| 黄平县| 黄大仙区| 新建县| 婺源县| 郸城县| 班戈县| 西丰县| 涿鹿县| 南皮县| 时尚| 隆林| 兴仁县| 南充市| 莱阳市| 涞水县| 巧家县| 庆云县| 汉沽区| 安岳县| 呼玛县| 汉源县|