您好,登錄后才能下訂單哦!
小編給大家分享一下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++如何實現大數相乘的算法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。