1 #INCLUDE <iostream> 2 #INCLUDE <cstdio> 3 #INCLUDE <CString을> 4 #DEFINE의 INF 1000000000 5 이용 스페이스 성병; 6 숯 CH1 [ 10005 ], CH2 [ 10005 ]; 7 INT LA, LB, CNT; 8 개 구조체 데이터 { int로 이 [ 1205 ], L} A, B; 9 부울 COM () 10 { 11 일 경우 (알 <BL) 복귀 0 ; 12 의 경우 (알> BL) 창 1; (13) 에 대한이 ( int로 난 = 알; I> 0 ] - I) (14) 의 경우 (AA [I]> BA [I]) 창 1 ; (15) 그 밖의 경우 (단 [I] <BA [I]) 복귀 0 ; 16 창 1 ; 17 } 18 무효 인쇄 (데이터 A) 19 { 20 동안 (AA [알] == 0 ) al-- ; (21) 에 대한이 ( int로 난 = 알; I> 0 ] - I) (22) 의 경우 (I == AL)의 printf (" %의 D " , AA [I]); 23 다른에서 의 printf ( " %의 09d " , AA [I]); 24 } 25 인라인 데이터 부 (데이터 A, 데이터 B) 26 { 27 INT의 K; 28 개 데이터 C; (29) 에 대한이 ( int로 I = 1 ; i가 <= 1,200 ; ++ I) 30 { 31 일 경우 (ⅰ <= BL) CA [I] = AA [내가] - BA [I]; (32) 그 밖의 경우 는 (i <= AL) CA [내가] = 단 [I]; 33 다른 CA [I] = 0 ; 34 의 경우 (CA [내가] < 0 ) 35 { 36 CA [내가] + = INF; (37) 단 [I + 1 ] - ; 38 } 39 } 40 CL = 알루미늄; 41 동안 (CA [CL] == 0 && c.l) cl-- ; 42 반환 C; 43 } 44 공극 디바 () 45 { (46) 에 대해 ( int로 I = 1 ; 나는 알 = <; 내가 ++ ) 47 { 48 의 경우 (AA [I] 1 ) 단 [I- 1 ] + = INF / 2 ; (49) 단 [I] >> = 1 ; (50) } (51) 의 경우 (AA [알]!의) al--을 ; 52 } 53 무효 divb () 54 { (55) 에 대해 ( int로 I = 1 ; i가 <= BL; 내가 ++ ) 56 { (57) 의 경우 (BA [I] 1 ) (BA)가 [I- 1 ] + = INF / 2 ; 58 BA [I] >> = 1 ; (59) } 60 경우 bl-- (BA [BL]!) ; 61 } 62 무효 MUL () 63 { (64) 에 대한이 ( int로 난을 알 =; I> 0 , 난 - ) 65 { 66 AA [I] << = 1 ; (67) 단 [I + 1 ] + = AA [I] / INF; (68) 단 [I] = % INF; 69 } 70 동안 (AA [알]> 0 ) a.l ++ ; (71) 에 대한이 ( int로 난의 BL = 단계; I> 0; 난 - ) 72 { 73 BA [I] << = 1 ; 74 BA [내가 + 1 ] + = BA [내가] / INF; 75 BA [I] = % INF; 76 } 77 동안 (BA [BL]> 0 ) b.l ++ ; 78 } 79 INT 의 main () 80 { 81 는 scanf ( " % S %의 S " , CH1 + 1 , CH + 1 ); 82 라 = 용의 strlen (CH1 + 1 ) = (LB)의 나 strlen (CH2 + 1 ); (83) 흐름 (라 % 9 ) A = 라 / 9 + 1 ; 84 다른 A = 라 / 9 ; 85 아우 (파운드 % 9 = LB를 포함) / 9 + 1 ; 86 다른 =의 LB와 / 9 ; 87 대 ( 하면 I = 1 ; I <= A; ++ I) 88 { 89 "다시하지 K1 = 최대 ( 1 , 나도이 * 9 + 1 ), K2 = la- (I- 1 ) * (9) ; (90) 에 대한 (INT의 J = K1, J <= K2; ++ j)는 91의 단 [I] = AA [I] * 10 + CH1 [J] - ' 0 ' ; 92 } 93 대 ( int로 I = 1 ; I <= BL; ++ I) 94 { 95 INT의 K1 = 최대 ( 1 , LB-난 * 9 + 1 ), K2 = lb- (I- 1 ) * (9) ; 96 대 ( INT의 , J <= K2, J = K1 ++ j)는 97 BA [I] = BA [I] * 10 + CH2 [J] - ' 0 '; 98 } 99 동안 ( 1 ) (100) { 101 경우 ((AA [ 1 ] % (2) == 0 ) && (BA [ 1 ] % (2) == 0 )) {디바 (); divb (); CNT ++ } 102 다른 경우 ((AA [ 1 ] % (2) == 0 )) 디바 (); (103) 그 밖의 경우 ((BA [ 1 ] % (2) == 0 )) divb (); 104 만약 (COM ()) {A = 서브 (a, b); 만약 (! 알) {동안 CNT (-) MUL () 인쇄 (b); 침입 ;}} 105 밖의 {b는 서브 (b를 a); 만약 (! BL) { 동안 (CNT -) MUL (); 인쇄 (A); 침입 ;}} 106 } 107 복귀 0 ; 108 }