#include<bits/stdc++.h>
using namespace std;
string Add(string A,string B)
{
int LA=A.length();
int LB=B.length();
string c(max(LA,LB)+1,'0');
for(int i=0;i<c.length();i++)
{
int a=0;
if(i<LA)
a=A[LA-i-1]-'0';
int b=0;
if(i<LB)
b=B[LB-i-1]-'0';
c[i]=(c[i]-'0'+a+b)%10+'0';
c[i+1]=(c[i]-'0'+a+b)/10+'0';
}
if(c[c.length()-1]=='0')
c=c.substr(0,c.length()-1);
reverse(c.begin(),c.end());
return c;
}
int main()
{
string A="11111111111111111111111111111111111";
string B="11222222222222222222222222222222222";
cout << "A+B="<<Add(A,B) << endl;
return 0;
}
int compare(string A,string B)
{
int LA=A.length();
int LB=B.length();
if(LA>LB)return 1;
if(LA<LB)return -1;
for(int i=0;i<LA;i++)
{
if(A[i]>B[i])return 1;
if(A[i]<B[i])return -1;
}
return 0;
}
string Minus(string A,string B)
{
if(compare(A,B)==0)return "0";
int LA=A.length();
int LB=B.length();
string c(max(LA,LB),'0');
if(compare(A,B)==1)
{
for(int i=0;i<LA;i++)
{
int a=A[LA-i-1]-'0';
int b=(i<LB)?B[LB-i-1]-'0':0;
if(a>=b)
{
c[i]=a-b+'0';
}else{
c[i]=10+a-b+'0';
for(int j=i;j<LA-1;j++)
{
if(A[LA-j-2]==0)A[LA-j-2]='9';
else A[LA-j-2]--;break;
}
}
}
}
else{
return "-"+Minus(B,A);
}
reverse(c.begin(),c.end());
for(int i=0;i<c.length();i++)
{
if(c[i]!='0')
{c=c.substr(i,LA-i);break;}
}
return c;
}
int main()
{
string A="9";
string B="1000";
cout<<"A-B="<<Minus(A,B)<<endl;
return 0;
}