您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關使用C++怎么實現一個大數相乘算法,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
#include<iostream> #include<deque> #include<sstream> std::string BigNumMultiply(std::string s1,std::string s2){ //記錄最終結果 std::string res=""; //使用deque是因為出現進位時可以在隊列前插入數據,效率比vector高,大小設為最小 std::deque<int> vec(s1.size()+s2.size()-1,0); for(int i=0;i<s1.size();++i){ for(int j=0;j<s2.size();++j){ vec[i+j]+=(s1[i]-'0')*(s2[j]-'0');//記錄相乘結果 } } //進位處理 int addflag=0; //倒序遍歷,是因為最左邊的值為最高位,最右邊的值在最低位,進位運算要從低位開始 for(int i=vec.size()-1;i>=0;--i){ int temp=vec[i]+addflag;//當前值加上進位值 vec[i]=temp%10;//當前值 addflag=temp/10;//進位值 } //如果有進位,將進位加到隊列頭部 while(addflag!=0){ int t=addflag%10; vec.push_front(t); addflag/=10; } for(auto c:vec){ std::ostringstream ss; ss<<c; res=res+ss.str(); } return res; } int main(){ std::string str1,str2; while(std::cin>>str1>>str2) { std::cout<<str1<<"*"<<str2<<"="<<std::endl; std::cout<<BigNumMultiply(str1,str2)<<std::endl; } return 0; }
上述就是小編為大家分享的使用C++怎么實現一個大數相乘算法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。