代码块
注释:输入进来的a,b和输出出去的c的顺序都是倒过来的,所以输入输出的时候都记住要倒序
ps: 5 x 2 = 01(真实=》 5 x 2 = 10)
加法:

string pluss(string a,string b) {
    if (a.size() < b.size()) {
        for (int i = a.size(); i < b.size(); i++) {
            a = a + "0";
        }
    }
    else {
        for (int j = b.size(); j < a.size(); j++) {
            b = b + "0";
        }
    }
    int ins = 0;
    for (int i = 0; i < a.size(); i++) {
        int linshi = (a[i] + b[i] - '0' - '0' + ins);
        a[i] = linshi % 10 + '0';
        ins = linshi / 10;
    }
    if (ins > 0) {
        a = a + (char)('0' + ins);
    }
    return a;
}


高精度乘法:
string muti(string a, string b) {
    char ary[2000];
    memset(ary, 0, sizeof ary);
    int len = 0;
    for (int i = 0; i < a.size(); i++) {
        int ins = 0;
        for (int j = 0; j < b.size(); j++) {
            int linshi = (a[i] - '0') * (b[j] - '0') + ins;
            ary[i + j] += linshi % 10 ;
            len = max(len, i + j);
            ins = linshi / 10;
        }
        if (ins > 0) {
            ary[b.size() + i] += ins;
            len = max(len, int(b.size() + i));
        }
    }
    for (int i = 0; i <= len; i++) {
        ary[i] += '0';
    }
    string c = ary;
    return c;
}
代码块

高精度除法:(a是正的)
string div(string a, ll b) {
    ll begin = a.size() - 1;
    string ans = "";
    ll now = 0;

    FOR(i, 0, begin) {
        now = now * 10 + a[i] - '0';
        if (now >= b) {
            ans = ans + (char)(now / b + '0');
            now %= b;
        }
        else {
            if (ans != "")
                ans = ans + "0";
        }
    }

    if (ans == "") ans = "0";
    return ans;
}