C++实现 高精度 加减乘除

高精度加法

//加法				大整数a			大整数b
vector<int> add(vector<int> &a, vector<int> &b) {
    int temp = 0;
    vector<int> res;
    for (int i = 0; i < a.size() || i < b.size(); ++i) {
        if (i < a.size())temp += a[i];
        if (i < b.size())temp += b[i];
        res.push_back(temp % 10);
        temp /= 10;
    }
    //最后一个进位
    if (temp)res.push_back(temp);
    return res;
}

高精度减法

//判断a,b大小
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;
}
//减法				大整数a		大整数b
vector<int> sub(vector<int> &a, vector<int> &b) {
    if (!cmp(a, b)) {
        cout << "-";
        return sub(b, a);
    }
    vector<int> res;
    int temp = 0;
    for (int i = 0; i < a.size(); ++i) {
        if (i < b.size())temp += b[i];
        temp = a[i] - temp;
        res.push_back((temp + 10) % 10);
        if (temp < 0)temp = 1;
        else temp = 0;
    }
    //去除前导零
    while (res.size() > 1 && !res.back())res.pop_back();
    return res;
}

高精度乘法

//乘法  			  大整数a		 整数b
vector<int> mul(vector<int> &a, int b) {
    int temp = 0;
    vector<int> res;
    for (int i = 0; i < a.size() || temp; ++i) {
        if (i < a.size())
            temp += a[i] * b;
        res.push_back(temp % 10);
        temp /= 10;
    }
    //去除前导零
    while (res.back() == 0 && res.size() > 1)res.pop_back();
    return res;
}

高精度除法

//除法			大整数a		整数b		余数r
vector<int> div(vector<int> &a, int b, int &r) {
    int temp = 0;
    vector<int> res;
    //倒着运算 
    for (int i = a.size() - 1; i >= 0; --i) {
        temp *= 10;
        temp += a[i];
        res.push_back(temp / b);
        temp %= b;
    }
    //运算后反转
    reverse(res.begin(), res.end());
    //去除前导零
    while (res.back() == 0 && res.size() > 1)res.pop_back();
    r = temp;
    return res;
}
posted @   嘿,抬头!  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示