不废话
#include<bits/stdc++.h>
using namespace std;
//a ,b都是正数
string f1(string a,string b){
string r="";
int k=0;
//考虑a与b相同
if(a==b) return "0";
//两数相减,将较大的数放上面
if(a.size()<b.size())
{
swap(a,b);
k = 1;
}else if(a.size()==b.size() && a<b){
swap(a,b);
k = 1;
}
//给较小的数补充前置0 123 - 1 => 123 - 001
while(b.size()!=a.size()) b = '0' + b;
int i,f=0,x,y,n=a.size();
//从后往前逐位相减
for(i=n-1;i>=0;i--)
{
x = a[i]-'0';
y = b[i]-'0';
if(x-f>=y)
{
r = char(x-f-y+'0') + r;
f = 0; //借位
}else{
r = char(x-f-y+10+'0') + r;
f = 1;
}
}
//删除前置0
while(r[0]=='0') r.erase(0,1);
if(k==1) r = '-'+r;
return r;
}
//实现两数相加
string f2(string a,string b){
string r="";
if(a.size()<b.size()) swap(a,b);
while(b.size()!=a.size()) b = '0' + b;
int i,x,y,n=a.size(),f=0;
for(i=n-1;i>=0;i--)
{
x = a[i]-'0';
y = b[i]-'0';
r = char((x+y+f)%10+'0') + r;
//是否会有新的进位 f=1进位 f=0无进位
f = (x+y+f)/10;
}
if(f==1) r = '1' + r;
return r;
}
int main(){
string a,b,t,at,bt,r="";
cin>>a>>b;
if(a[0]!='-' && b[0]!='-'){ //正 正
r = f1(a,b);
}else if(a[0]=='-' && b[0]!='-'){ //负 正
t = "";
for(int i=1;i<a.size();i++) t = t + a[i];
r ="-"+f2(t,b);
}else if(a[0]!='-' && b[0]=='-'){ //正 负
t = "";
for(int i=1;i<b.size();i++) t = t + b[i];
r = f2(a,t);
}else{ //负 负
//at 接收a字符串对应的正数
//bt 接收b字符串对应的正数
at = "";
bt = "";
for(int i=1;i<a.size();i++) at = at + a[i];
for(int i=1;i<b.size();i++) bt = bt + b[i];
r = f1(bt,at);
}
int c = 0;
string str = "";
//从后往前
for(int i=r.size()-1;i>=0;i--)
{
str = r[i] + str;
c++;
if(c%3==0 && i!=0 && (i>0 && r[i-1]!='-')){
str = ',' + str;
}
}
cout<<str;
return 0;
}