什么毒瘤!!!!当场去世!!!!
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e7+10;
struct hugeint{
int len,a[MAXN];
hugeint(){
memset(a,0,sizeof(a));len=1;
}
bool operator<(const hugeint&t)const{
if(len!=t.len)
return len<t.len;
for(int i=len;i>=1;i--)
if(a[i]!=t.a[i])
return a[i]<t.a[i];
return 0;
}
};
hugeint x,y,z;
string s;
int read(hugeint &x)
{
int f=0;
cin>>s;
if(s[0]=='-')
f=1;
x.len=s.size();
for(int i=f;i<x.len;i++)
x.a[x.len-i]=s[i]-'0';
x.len-=f;
return f;
}
void write(hugeint &x)
{
for(int i=x.len;i>=1;i--)
cout<<x.a[i];
}
void add(const hugeint &x,const hugeint &y,hugeint &z)
{
z.len=max(x.len,y.len);
for(int i=1;i<=z.len;i++)
z.a[i]=x.a[i]+y.a[i];
for(int i=1;i<=z.len;i++)
{
z.a[i+1]+=z.a[i]/10;
z.a[i]%=10;
}
if(z.a[z.len+1]>0)
z.len++;
}
void jian(const hugeint &x,const hugeint &y,hugeint &z)
{
z.len=x.len;
for(int i=1;i<=z.len;i++)
{
z.a[i]+=x.a[i]-y.a[i];
if(z.a[i]<0)
{
z.a[i]+=10;
z.a[i+1]-=1;
}
}
while(z.a[z.len]==0&&z.len>1)
z.len--;
}
int main()
{
int flag1=read(x),flag2=read(y);
if(!flag1&&!flag2)
{
add(x,y,z);
write(z);
}
else
{
if(flag1&&flag2)
{
cout<<"-";
add(x,y,z);
write(z);
}
else
{
if(!flag1)
{
if(x<y)
cout<<"-",jian(y,x,z);
else
jian(x,y,z);
write(z);
}
else
{
if(x<y)
jian(y,x,z);
else
cout<<"-",jian(x,y,z);
write(z);
}
}
}
}