用c++写高精度减法
以下是一个用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
``
原文地址: https://www.cveoy.top/t/topic/ihdW 著作权归作者所有。请勿转载和采集!