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

溫馨提示×

溫馨提示×

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

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

C++如何實現大數相乘的算法

發布時間:2021-04-14 11:28:04 來源:億速云 閱讀:246 作者:小新 欄目:編程語言

小編給大家分享一下C++如何實現大數相乘的算法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

由于數字無法用一個整形變量存儲,很自然的想到用字符串來表示一串數字。然后按照乘法的運算規則,用一個乘數的每一位乘以另一個乘數,然后將所有中間結果按正確位置相加得到最終結果。可以分析得出如果乘數為A和B,A的位數為m,B的位數為n,則乘積結果為m+n-1位(最高位無進位)或m+n位(最高位有進位)。因此可以分配一個m+n的輔存來存儲最終結果。為了節約空間,所有的中間結果直接在m+n的輔存上進行累加。

C++實現大數相乘代碼如下:

#include<iostream>                               
#include<string>
using namespace std;
 
 string BigNumMultiply(string str1,string str2)
 {
 int size1=str1.size(),size2=str2.size();
 string str(size1+size2,'0');
 for(int i=size2-1;i>=0;--i)
 {
 int mulflag=0,addflag=0;
 for(int j=size1-1;j>=0;--j)
 {
 int temp1=(str2[i]-'0')*(str1[j]-'0')+mulflag;
 mulflag=temp1/10;
 temp1=temp1%10;
 int temp2=str[i+j+1]-'0'+temp1+addflag;
 str[i+j+1]=temp2%10+48;
 addflag=temp2/10;
 }
 str[i]+=mulflag+addflag;
 }
 if(str[0]=='0')
 str=str.substr(1,str.size());
 return str;
 }
 
 int main()
 {
 string str1,str2;
 while(cin>>str1>>str2)
 {
 cout<<str1<<"*"<<str2<<"="<<endl;
 cout<<BigNumMultiply(str1,str2)<<endl;
 }
 return 0;
}

以上是“C++如何實現大數相乘的算法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

c++
AI

玉田县| 湖南省| 太仓市| 綦江县| 武汉市| 乌拉特中旗| 白山市| 乌什县| 九寨沟县| 上饶市| 民丰县| 龙口市| 吴桥县| 昂仁县| 宣威市| 那坡县| 阿坝| 唐河县| 石阡县| 葫芦岛市| 正蓝旗| 郓城县| 克什克腾旗| 兰州市| 阳江市| 通城县| 富裕县| 鄂尔多斯市| 大安市| 尚志市| 贡嘎县| 颍上县| 聂拉木县| 京山县| 航空| 高陵县| 和林格尔县| 洛扎县| 岳普湖县| 日照市| 米泉市|