[] OJ 큰 정수 곱셈

아이디어 : 일반마다 곱한 후 합산.

다시 추가 계산 결과를 이용하여 스트링 클래스의 멤버 함수를 삽입한다. 해당 문자 연산과 정수 연산 차이가 있습니다.

1 #INCLUDE <iostream>
 2  사용  스페이스 성병;
3  INT 의 main () {
 4      캐릭터 A, B, C [ 200 ];
5      INT의 ANS [ 401 ] = { 0 };
6      INT 최대 TMP = 0 , K = 0 , MAX_LENGTH;
7      CIN 사항 >> >> B;
8       ( int로 - I = a.length () 1 , 난> = 0 -; {I)
 (9 개)          , (k)를 (C) [K]를 취소하려면 (c [K] .length () ' 0 ');
10           ( INT J = b.length를 () - 1 ; J> = 0 - J) {
 11              TMP = (a [I] - ' 0 ' ) * (B [J] - ' 0 ' ) + 최대 ;
(12)              최대 = TMP / 10 ;
13              TMP를 TMP의 % = 10 ;
14 개              (C) [K]를 취소하려면 (c [K] .length (), 1 ( 문자 ) (TMP + ' 0 ' ));
15          }
 16          의 경우 (업! = 0) {
 17 개              (C) [K]를 취소하려면 (c [K] .length (), 1 ( 문자 ) (최대 + ' 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 = 1을 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       ( INTMAX_LENGTH I = - 1 ; I> = 0 ; - I)
 38          COUT << ANS [I];
39      COUT << ENDL;    
40      반환  0 ;
41 }

 

추천

출처www.cnblogs.com/victorique-de-blois/p/11592602.html