C++実装の大数乗算アルゴリズムの例

1502 ワード

本論文の例では,C++実装の大数乗算アルゴリズムについて述べた.皆さんの参考にしてください.具体的には以下の通りです.
昨夜学校は筆記試験を募集して、虐待して顔がなくて寝て、能力はあまりにもかすがあって、しかし私はまだ私达の穴の中で前進して、一日も早く穴を跳んで、衣食住の心配を解決することを望んでいます.
大数乗算とは、乗算結果または乗数自体がlong longタイプでオーバーフローする数値を指し、通常、これらの数値はstringタイプで表され、サイズを動的に調整可能なデータ構造(vector,string,deque)シミュレーションによって数値の乗算操作が実現される.通常の乗算では,mビット数とnビット数を乗算し,最後の結果ビット数は区間内[m+n−1,m+n]であることが分かった.たとえば34*56は、通常、次のように計算されます.
3,4をそれぞれ6に乗算し,下位のキャリーを記録し,3,4を5に対して同じ操作を行い,2番目の乗数の最上位が乗算されたことを知り,アルゴリズムは終了する.
したがって、各ビット数の乗算結果を保存し、最後にキャリー変換を統一することができます.

#include
#include
#include
std::string BigNumMultiply(std::string s1,std::string s2){
 //      
 std::string res="";
 //  deque                  ,   vector ,      
 std::deque vec(s1.size()+s2.size()-1,0);
 for(int i=0;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<>str1>>str2)
 {
  std::cout< 
 

本稿で述べたことが皆さんのC++プログラム設計に役立つことを願っています.