POJ 1503 -- Integer Inquiry

POJ 1503 -- Integer Inquiry

   高精度加法.
 1 /* http://poj.org/problem?id=1503 */
 2 
 3 #include <cstdio>
 4 #include <string>
 5 #include <algorithm>
 6 using namespace std;
 7 
 8 class bigInteger {
 9 public:
10     const static int Max_bits = 1 << 8;
11     
12     bigInteger::bigInteger() {
13         memset(integer, 0sizeof(integer));
14         bits = 1;
15     }
16     
17     static void read(bigInteger* _int) {
18         char s[Max_bits];
19         scanf("%s", s);
20         _int->bits = strlen(s);
21         for (int ix = _int->bits - 1, it = 0; ix != -1 && it != _int->bits; --ix, ++it) {
22             _int->integer[it] = (int)(s[ix] - '0');
23         }
24     }
25     
26     static void write(bigInteger* _int) {
27         for (int it = _int->bits - 1; it != -1--it) {
28             printf("%d", _int->integer[it]);
29         }
30     }
31     
32     static void writeln(bigInteger* _int) {
33         write(_int);
34         putchar('\n');
35     }
36     
37     static bigInteger* add(bigInteger* _int_1, bigInteger* _int_2) {
38         int add_bits = max(_int_1->bits, _int_2->bits);
39         bigInteger *_int = new bigInteger();
40         for (int pit = 0; pit <= add_bits; ++pit) {
41             int t = _int_1->integer[pit] + _int_2->integer[pit] + _int->integer[pit];
42             _int->integer[pit] = t % 10;
43             _int->integer[pit + 1= t / 10;
44         }
45         _int->bits = _int->integer[add_bits] != 0 ? add_bits + 1 : add_bits;
46         return _int;
47     }
48     
49     bool is_zero() {
50         return bits == 1 && integer[0== 0;
51     }
52 private:
53     int bits, integer[Max_bits];
54 };
55 
56 int main() {
57     bigInteger *sum = new bigInteger();
58     while (1) {
59         bigInteger *= new bigInteger();
60         bigInteger::read(a);
61         if (a->is_zero()) break;
62         sum = bigInteger::add(a, sum);
63         delete a;
64     }
65     bigInteger::writeln(sum);
66 
67     return 0;
68 }
69 

你可能感兴趣的:(POJ 1503 -- Integer Inquiry)