[] OJ大きな整数乗算

アイデア:通常のすべてのは、乗算され、その後、一緒に加えます。

バック追加される計算結果を用いて、文字列クラスのメンバー関数を挿入します。その文字演算と整数演算の違いに注意してください。

1つの#include <iostreamの>
 2  使用して 名前空間STDを、
3  INT メイン(){
 4      、B、C [ 200 ]。
5つの     int型 ANS [ 401 ] = { 0 }。
6      INTアップTMP、= 0、K = 0 、MAX_LENGTH。
7      CIN >> A >> B。
8      のためのint型 - I = a.length()1 ; I> = 0 - ; {I)
 9個の          、C [K] .insert(C [K] .LENGTH()、kは' 0 ');
10          のためにINT J =てb.length() - 1 ; J> = 0 ; - J){
 11              TMP =([I] - ' 0 ')*(B [J] - ' 0 ')+ アップ;
12              アップ= TMP / 10 13              = TMP%のTMP 10 14個の              C [K] .insert(C [K] .LENGTH()、1、(CHAR)(TMP + ' 0 ' ));
15          }
 16          であれば(アップ!= 0){
 17個の              C [K] .insert(C [K] .LENGTH()、1、(CHAR)(最大+ ' 0 ' ));
18              、最大= 0 19          }
 20          MAX_LENGTH =(MAX_LENGTH> C [K] .LENGTH())?(MAX_LENGTH):(C [K] .LENGTH())。
21          K ++ 22      }
 23      TMP = 0 24      、最大= 0 25      のためにint型 I = 0 ; iがMAX_LENGTHを<; ++ i)が{
 26          int型 J = 0 ; J <K; ++ j)は{
 27              であれば(C [J] .LENGTH()<= I)
 28                  続けます29の              ANS [I] + = C [J] [I] - ' 0 ' 30          }
 31の          ANS [I] + = 最大;
32          アップ=のANS [I] / 10 33の          ANS [I]%= 10 34      }
 35      であれば(アップ!= 0 36          COUT << アップ。
37      のためのint型I = MAX_LENGTH - 1I> = 0 ; - I)
 38          COUT << ANS [I]。
39      coutの<< てendl;    
40      リターン 0 ;
41 }

 

おすすめ

転載: www.cnblogs.com/victorique-de-blois/p/11592602.html
おすすめ