以下是一个用C++写的高精度减法的示例代码:

#include <iostream>
#include <vector>
using namespace std;

// 函数用于移除结果前面多余的0
void removeLeadingZeros(vector<int>& num) {
    while (num.size() > 1 && num.back() == 0) {
        num.pop_back();
    }
}

// 高精度减法
vector<int> subtract(vector<int>& num1, vector<int>& num2) {
    int n1 = num1.size();
    int n2 = num2.size();
    vector<int> result(max(n1, n2), 0);
    int carry = 0;
    for (int i = 0; i < result.size(); i++) {
        int digit = (i < n1 ? num1[i] : 0) - (i < n2 ? num2[i] : 0) - carry;
        if (digit < 0) {
            digit += 10;
            carry = 1;
        } else {
            carry = 0;
        }
        result[i] = digit;
    }
    removeLeadingZeros(result);
    return result;
}

int main() {
    string str1, str2;
    cin >> str1 >> str2;

    vector<int> num1, num2;
    for (int i = str1.size() - 1; i >= 0; i--) {
        num1.push_back(str1[i] - '0');
    }
    for (int i = str2.size() - 1; i >= 0; i--) {
        num2.push_back(str2[i] - '0');
    }

    vector<int> result = subtract(num1, num2);

    cout << "Result: ";
    for (int i = result.size() - 1; i >= 0; i--) {
        cout << result[i];
    }
    cout << endl;

    return 0;
}

这段代码中,我们首先定义了一个removeLeadingZeros函数,用于移除结果前面多余的0。然后定义了一个subtract函数,用于执行高精度减法运算。最后在main函数中,我们读取两个输入字符串,并将其转换为高精度数,然后调用subtract函数进行减法运算,最后输出结果。

示例输入和输出:

输入:

123456789012345678901234567890
123456789012345678901234567890

输出:

Result: 0
``
用c++写高精度减法

原文地址: https://www.cveoy.top/t/topic/ihdW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录