#include <iostream>
#include <string>
#include <algorithm>
#define maxn 10010
using namespace std;
struct bigint
{
int value[maxn],len;
bigint(string s)
{
len=s.length();
for(int i=s.length()-1,j=1;i>=0;i--,j++)
value[j]=s[i]-'0';
}
bigint() {}
int &operator[](int i)
{
return value[i];
}
void print()
{
for(;!value[len];)
len--;
for(int i=max(1,len);i>=1;i--)
cout<<value[i];
return;
}
};
bool operator<(bigint a,bigint b)
{
if(a.len!=b.len)
return a.len<b.len;
for(int i=a.len;i>=1;i--)
{
if(a[i]!=b[i])
return a[i]<b[i];
}
return false;
}
bigint operator+(bigint a,bigint b)
{
bigint c;
c.len=max(a.len,b.len);
for(int i=1;i<=max(a.len,b.len);i++)
{
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10;
c[i]%=10;
}
if(c[c.len+1])
c.len++;
return c;
}
bigint operator-(bigint a,bigint b)
{
bigint c;
c.len=max(a.len,b.len);
if(a<b)
{
bigint t;
t=a;
a=b;
b=t;
cout<<"-";
}
for(int i=1;i<=a.len;i++)
{
c[i]+=a[i]-b[i];
if(c[i]<0)
{
c[i]+=10;
c[i+1]-=1;
}
}
return c;
}
int main()
{
string s1,s2;
cin>>s1>>s2;
if(s1[0]!='-'&&s2[0]!='-')
{
bigint a(s1),b(s2);
(a+b).print();
return 0;
}
if(s1[0]=='-'&&s2[0]!='-')
{
s1.erase(s1.begin());
bigint a(s1),b(s2);
(b-a).print();
return 0;
}
if(s1[0]!='-'&&s2[0]=='-')
{
s2.erase(s2.begin());
bigint a(s1),b(s2);
(a-b).print();
return 0;
}
if(s1[0]=='-'&&s2[0]=='-')
{
s1.erase(s1.begin());
s2.erase(s2.begin());
bigint a(s1),b(s2);
cout<<"-";
(a+b).print();
return 0;
}
}
别的OJ有三个点WA