思路很简单,将string转为int,计算完后再转为string,但要简洁的实现起来并不容易。
typedef vector<int> bigint; bigint make_bigint(string const& s) { //将字符串转为vector<int> bigint n; //将s中的字符转为int,以逆序存储在n中,其中back_inserter返回的是n的最后一个位置的迭代器 //注意lambda表达式的用法 transform(s.rbegin(), s.rend(), back_inserter(n), [](char c){return c - '0'; }); return n; } //重载乘法运算符,双目运算,声明为友元 friend bigint operator*(bigint const& x, bigint const& y) { bigint z(x.size() + y.size()); for (int i = 0; i < x.size(); i++) { for (int j = 0; j < y.size(); j++) { z[i + j] += x[i] * y[j]; z[i + j + 1] = z[i + j] / 10; z[i + j] = z[i + j] % 10; } } return z; } string to_string(bigint const& n) { string str; transform(find_if(n.rbegin(), n.rend(), [](char c){return c > '