#include <iostream>
#include<vector>
using namespace std;
//判断是否有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;
}
// 请在此输入您的代码
//C=A-B.地位到高位运算
> **vector<int>sub(vector<int>&A,vector<int>&B){
vector<int>C;
for(int i=0,t=0;i<A.size();i++){
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;
}__**
// 123-120=003去0.结果为0的话不能去掉
while(C.size()>1 && C.back()==0)C.pop_back();
return C;
}
int main(){
string a,b;
vector<int>A,B;
cin>>a>>b;
for(int i=a.size()-1;i>=0;i--)A.push_back(a[i]-'0');
for(int i=b.size()-1;i>=0;i--)B.push_back(b[i]-'0');
if(cmp(A,B))
{
auto C=sub(A,B);
for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
}
else
{
auto C=sub(B,A);
printf("-");
for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
}
return 0;
}
问题一。
这个sub函数到底是什么意思吗。
问题二.
,这个怎么减成318了
问题三。
这就是模拟竖式笔算减法的过程。如果不够减,就加上10再减,也可以说是 % 10 取模,然后 t 就是借位
不知道你这个问题是否已经解决, 如果还没有解决的话:sub函数是用于执行高精度减法运算的函数。它接收两个大整数作为参数,将第一个参数减去第二个参数,并返回结果。
以下是一个简单的sub函数的示例代码:
#include <iostream>
#include <string>
std::string sub(const std::string& num1, const std::string& num2) {
std::string result;
int len1 = num1.length();
int len2 = num2.length();
int carry = 0; // 存储借位
// 逐位相减
for (int i = len1 - 1, j = len2 - 1; i >= 0 || j >= 0 || carry == 1; i--, j--) {
int digit1 = (i >= 0) ? num1[i] - '0' : 0;
int digit2 = (j >= 0) ? num2[j] - '0' : 0;
int diff = digit1 - digit2 - carry;
if (diff < 0) {
diff += 10;
carry = 1;
} else {
carry = 0;
}
result.insert(result.begin(), diff + '0');
}
// 移除结果中的前导零
int i = 0;
while (result[i] == '0') {
i++;
}
result = result.substr(i);
return result;
}
int main() {
std::string num1 = "123456789";
std::string num2 = "987654321";
std::cout << sub(num1, num2) << std::endl;
return 0;
}
这个问题很可能是代码中的某个错误导致的。根据你提供的信息,无法确定具体的问题所在。可能的问题包括参数传递错误、算法错误等等。
你可以检查以下几点来确定问题:
如果你能提供更多的代码或错误信息,我可以帮你更具体地找出问题所在。
不,高精度减法的结果应该是以十进制形式表示的。高精度减法是用于计算大整数间的减法运算,结果应该是一个十进制整数。
如果你的结果看起来像是一个二进制数,请检查你的代码中是否存在转换错误,或者在输出结果时是否使用了错误的格式化方法。