{ struct BigInt { int n, a[1003]; }; BigInt operator +(const BigInt& a, const BigInt& b) { BigInt c; static int s[1003]; memset(s, 0, sizeof(s)); for (int i = 0; i < a.n; ++ i) { s[i] = a.a[i]; } for (int i = 0; i < b.n; ++ i) { s[i] += b.a[i]; } c.n = max(a.n, b.n); for (int i = 0; i < c.n; ++ i) { s[i + 1] += s[i] / 10; s[i] %= 10; } for (; s[c.n]; ++ c.n) { s[c.n + 1] = s[c.n] / 10; s[c.n] %= 10; } memcpy(c.a, s, sizeof(s)); return c; } int main() { BigInt a, b; a + b; } }