记得用引用

高精度加法

vector<int> 
madd(vector<int> a, vector<int> b)
{
    int t = 0;
    vector<int> c;
    for(int i = 0; i < a.size() || i < b.size() || t; i ++)
    {
        if(i < a.size()) t += a[i];
        if(i < b.size()) t += b[i];
        c.push_back(t % 10);
        t /= 10;
    }
    
    return c;
}

高精度减法

#include <iostream>
#include <vector>
 
using namespace std;
 
bool 
cmp(vector<int> &a, vector<int> &b)
{
    if(a.size() != b.size()) return a.size() > b.size();
    for(int i = a.size() - 1; i >=  0; i --)
    {
        if(a[i] != b[i])  return a[i] > b[i];
    }
    
    return true;
    
}
 
 
vector<int>
msub(vector<int> &a, vector<int> &b)
{
    vector<int> c;
    int t = 0;
    for(int i = 0; i < a.size() || i < b.size(); i ++)
    {
        if(i < a.size())  t = a[i] - t;
        if(i < b.size())  t -= b[i];
        c.push_back((t + 10) % 10);
        if(t < 0) t = 1;
        else t = 0;
    }
    
    while(c.size() > 1 && c.back() == 0) c.pop_back();
    
    return c;
}
 
 
int 
main()
{
    string a, b;
    cin >> a >> b;
    vector<int> x, y;
 
    
    for(int i = a.size() - 1; i >= 0; i --)    x.push_back(a[i] - '0');
    for(int i = b.size() - 1; i >= 0; i --)    y.push_back(b[i] - '0');
    
    if(cmp(x, y))
    {
        auto c = msub(x, y);
        for(int i = c.size() - 1; i >= 0; i --)
        {
            printf("%d",c[i]);
        }
    }else{
        printf("-");
        auto c = msub(y, x);
        for(int i = c.size() - 1; i >= 0; i --)
        {
            printf("%d",c[i]);
        }
    }
    
    
    
    return 0;
}

高精度除法

#include <iostream>
#include <vector>
#include <algorithm>
 
 
using namespace std;
 
vector<int>
div(vector<int> &a, int b, int &r)
{
    vector<int> c;
    r = 0;
    
    for(int i = a.size() - 1; i >= 0; i --)
    {
        r = r * 10 + a[i];
        c.push_back(r / b);
        r = r % b;
    }
    
    reverse(c.begin(), c.end());
    
    while(c.size() > 1 && c.back() == 0) c.pop_back();
    
    return c;
}
 
 
 
int
main()
{
    sa

高精度乘法

#include <iostream>
#include <vector>
 
using namespace std;
 
 
vector<int> 
mul(vector<int> &a, int b)
{
    long long  t = 0;
    vector<int> c;
    
    for(int i = 0; i < a.size() || t; i ++)
    {
        if(i < a.size()) t += a[i] * b;
        c.push_back(t % 10);
        if(t) t /= 10;
    }
    
    while(c.size() > 1 && c.back() == 0) c.pop_back();
    return c;
}
 
int 
main()
{
    string s;
    int b;
    cin >> s >> b;
    
    vector<int> a;
    
    for(int i = s.size() - 1; i >= 0; i --)
    {
        a.push_back(s[i] - '0');    
    }
    
    auto c = mul(a, b);
    
    for(int i = c.size() - 1; i >= 0; i --)
    {
        printf("%d", c[i]);
    }
    
    
    return 0;
}