Hex Artifact Content
Not logged in

Artifact 029a85274b27ccda289c953720891b01fd7e0dda:


0000: 0a 73 74 72 69 6e 67 20 61 64 64 28 63 6f 6e 73  .string add(cons
0010: 74 20 73 74 72 69 6e 67 26 20 61 2c 20 63 6f 6e  t string& a, con
0020: 73 74 20 73 74 72 69 6e 67 26 20 62 29 0a 7b 0a  st string& b).{.
0030: 09 69 6e 74 20 6e 20 3d 20 6d 61 78 28 61 2e 73  .int n = max(a.s
0040: 69 7a 65 28 29 2c 20 62 2e 73 69 7a 65 28 29 29  ize(), b.size())
0050: 2c 20 63 61 72 72 79 3d 30 3b 0a 09 73 74 72 69  , carry=0;..stri
0060: 6e 67 20 63 28 6e 2c 20 27 30 27 29 3b 0a 09 66  ng c(n, '0');..f
0070: 6f 72 28 69 6e 74 20 69 3d 30 3b 20 69 3c 6e 3b  or(int i=0; i<n;
0080: 20 2b 2b 69 29 20 7b 0a 09 09 69 6e 74 20 78 20   ++i) {...int x 
0090: 3d 20 28 61 2e 73 69 7a 65 28 29 3c 3d 69 20 3f  = (a.size()<=i ?
00a0: 20 30 20 3a 20 61 5b 61 2e 73 69 7a 65 28 29 2d   0 : a[a.size()-
00b0: 31 2d 69 5d 2d 27 30 27 29 0a 09 09 20 20 20 20  1-i]-'0')...    
00c0: 20 20 2b 20 28 62 2e 73 69 7a 65 28 29 3c 3d 69    + (b.size()<=i
00d0: 20 3f 20 30 20 3a 20 62 5b 62 2e 73 69 7a 65 28   ? 0 : b[b.size(
00e0: 29 2d 31 2d 69 5d 2d 27 30 27 29 20 2b 20 63 61  )-1-i]-'0') + ca
00f0: 72 72 79 3b 0a 09 09 63 5b 6e 2d 31 2d 69 5d 20  rry;...c[n-1-i] 
0100: 3d 20 63 68 61 72 28 27 30 27 2b 78 25 31 30 29  = char('0'+x%10)
0110: 3b 0a 09 09 63 61 72 72 79 20 3d 20 78 2f 31 30  ;...carry = x/10
0120: 3b 0a 09 7d 0a 09 69 66 28 20 63 61 72 72 79 20  ;..}..if( carry 
0130: 29 20 63 20 3d 20 63 68 61 72 28 27 30 27 2b 63  ) c = char('0'+c
0140: 61 72 72 79 29 2b 63 3b 0a 09 72 65 74 75 72 6e  arry)+c;..return
0150: 20 63 3b 0a 7d 0a                                 c;.}.