# Include <iostream> <br/> # define maxsize 1020 <br/> # define max (A, B) (A> B? A: B) <br/> char STR [maxsize]; <br/> struct longnum {<br/> int sign, size; <br/> long data [maxsize]; <br/> longnum () {<br/> Sign = 1; size = 0; <br/>}< br/> longnum (char STR []) {<br/> char * P; <br/> Sign = 1; size = 0; <br/> P = STR; <br/> If (P [0] = '-') {Sign =-1; p ++ ;} <br/> size = strlen (p); <br/> for (INT I = 1; I <= size; I ++) <br/> data [I] = P [size-I]-48; <br/>}< br/> longnum out () {<br/> printf ("% d", data [size] * SIG N); <br/> for (INT I = size-1; I >=1; I --) <br/> putchar (data [I] + 48 ); <br/> putchar ('/N'); <br/>}< br/>}; </P> <p> longnum operator-(longnum ); <br/> longnum operator + (longnum A, longnum B); <br/> longnum operator-(longnum A, longnum B ); <br/> longnum operator * (longnum A, longnum B); <br/> longnum operator/(longnum A, long B ); </P> <p> longnum operator-(longnum A) {<br/>. sign * =-1; <br/> return a; <B R/>}< br/> bool operator <(longnum A, longnum B) {<br/> If (. size <B. size) return true; <br/> If (. size> B. size) return false; <br/> for (INT I =. size; I> = 1; I --) {<br/> If (. data [I] <B. data [I]) return true; <br/> If (. data [I]> B. data [I]) return false; <br/>}< br/> longnum operator-(longnum A, longnum B) {<br/> If (. sign! = B. sign) return a + (-B); <br/> if (a <B) Return-(B-A); <br/> int WB = 0; <br/> longnum t; <br/> T. sign =. sign; <br/> T. size = max (. size, B. size); <br/> for (INT I = 1; I <= B. size; I ++) {<br/> T. data [I] =. data [I]-B. data [I]-WB; <br/> WB = 0; <br/> If (T. data [I] <0) {<br/> WB = 1; <br/> T. data [I] + = 10; <br/>}< br/> for (INT I = B. size + 1; I <=. size; I ++) {<br/> T. data [I] =. data [I]-WB; <br/> WB = 0; <br/> If (T. data [I] <0) {<Br/> WB = 1; <br/> T. data [I] + = 10; <br/>}< br/> while (! T. data [T. size] & T. size) T. size --; <br/> return t; <br/>}< br/> longnum operator + (longnum A, longnum B) {<br/> If (. sign! = B. sign) {<br/> If (. sign =-1) return B-(-A); <br/> return a-(-B); <br/>}< br/> int WB = 0; <br/> longnum t; <br/> T. sign =. sign; <br/> T. size = max (. size, B. size); <br/> memset (&. data [. size + 1], 0, sizeof (. data [0]) * (T. size-a.size); <br/> memset (& B. data [B. size + 1], 0, sizeof (B. data [0]) * (T. size-b.size); <br/> for (INT I = 1; I <= T. size; I ++) {<br/> T. data [I] =. data [I] + B. data [I] + WB; <br/> WB = 0; <br/> If (T. data [I]> 9) {<br/> WB = T. data [I]/10; <br/> T. data [I] % = 10; <br/>}< br/> while (WB) {T. data [++ T. size] = WB; WB/= 10 ;}< br/> return t; <br/>}< br/> longnum operator * (longnum A, longnum B) {<br/> longnum t; <br/> T. sign =. sign * B. sign; <br/> T. size =. size + B. size-1; <br/> memset (& T. data [1], 0, sizeof (T. data [0]) * (T. size + 20); <br/> for (INT I = 1; I <=. size; I ++) {<br/> for (Int J = 1; j <= B. size; j ++) {<br/> T. data [I + J -1] + =. data [I] * B. data [J]; <br/> If (T. data [I + J-1]> 9) {<br/> T. data [I + J] + = T. data [I + J-1]/10; <br/> if (I + j> T. size) T. size = I + J; <br/> T. data [I + J-1] % = 10; <br/>}< br/> while (! T. data [T. size] & T. size) T. size --; <br/> return t; <br/>}< br/> longnum operator/(longnum A, int B) {<br/> for (INT I =. size; I> = 1; I --) {<br/> If (I-1> 0). data [I-1] + =. data [I] % B * 10; <br/>. data [I]/= B; <br/>}< br/> while (! A. data [. size] &. size). size --; <br/> return a; <br/>}< br/> int main (void) {<br/> freopen ("hda. in "," r ", stdin); <br/> freopen (" hda. out "," W ", stdout); <br/> longnum ans; <br/> int t; </P> <p> while (scanf (" % s ", str )! = EOF) <br/> ans = ans + STR; <br/> ans. Out (); <br/> return 0; <br/>}< br/>