高精度减法题,各位帮我看看为啥我的输出莫名其妙在结果中间出现了一个负号
#include <bits/stdc++.h>
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> loss01(vector<int> &a,vector<int> &b)
{
vector<int> C;
for(int i=0;i<a.size();i++)
{
if(i>=b.size())
{
C.push_back(a[i]);
continue;
}
if(a[i]<b[i])
{
a[i]+=10;
a[i+1]-=1;
}
C.push_back(a[i]-b[i]);
}
return C;
}
int main()
{
string A,B;
vector<int> a,b,C;
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)==true)C = loss01(a,b);
else
{
C= loss01(b,a);
cout<<"-";
}
for(int i=C.size()-1;i>=0;i--)
{
cout<<C[i];
}
return 0;
}

测试数据如下:
834759941806152327900303151940196336060166992323381793006569112355455417182275047723716863558023198812556660965034876453196343663912966691993179332101329457072368130838432382442268056736351699000531533905891383548143212225860594411852986342939876618040011587608495448302207348447231253749252393529480791364963334998240618542705610316034216640260057315992222960153236561529337492196200456790971074681689375240113760172920200875086339547064832250693720175733336019433955946578365398845698054072342
1730212895609293780968781134422638013529337293953691202590416001015768176027398863777824489704339557737408048293638085241389042173942253145158882643543317299641617721453243716470035888718649999433851361288450883586077443742282144148770165505395776302856007672738840600408025145144269621804651639658798526865013172504028693729820255215825318827715895274406426858072321951569289515588456319694750151164168327105512059938690032122373175061408639335004407082357709386204929019847