BigUnsigned operator+(const BigUnsigned& one) const { BigUnsigned res; for (int i = 0, x = 0; i < max(len, one.len) + 1; i++) { int tmp = d[i] + one.d[i] + x; res.d[res.len++] = tmp % 10; x = tmp / 10; } res.Clean(); return res; }
BigUnsigned operator*(const BigUnsigned& one) { BigUnsigned res; res.len = len + one.len; for(int i = 0; i < len; i++) for(int j = 0; j < one.len; j++) res.d[i + j] += d[i] * one.d[j]; for(int i = 0; i < res.len - 1; i++) { res.d[i + 1] += res.d[i] / 10; res.d[i] %= 10; } res.Clean(); return res; }