8个点RE
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
long long compare(string x,string y)//比较两个数x,y的大小,x>y,则返回 1,x=y,则返回 0,x<y 则返回-1
{
if (x.length()>y.length())
return 1;
else if (x.length()<y.length())
return -1;
else
{
for (int i=0;x[i];i++)
{
if (x[i]>y[i])
return 1;
if (x[i]<y[i])
return -1;
}
}
return 0;
}
long long ax[205],bx[205],cx[205]; // ax数组保存 被减数,bx数组保存减数,cx数组保存结果
int main()
{
string a,b;
long long i,lena,lenb,lenc;
cin>>a;
cin>>b;
lena=a.length();
lenb=b.length();
lenc=0;
memset(ax,0,sizeof(ax)); //下面是对三个数组初始化的命令
memset(bx,0,sizeof(bx));
memset(cx,0,sizeof(cx));
for (i=1; i<=lena; i++)
{
ax[i]=a[lena-i]-'0';
}
for (i=1; i<=lenb; i++)
{
bx[i]=b[lenb-i]-'0';
}
if (compare(a,b)==1)
{
for (i=1;i<=lena;i++)
{
cx[i]=ax[i]-bx[i];
if (cx[i]<0)
{
cx[i]=10+cx[i];
ax[i+1]--;
}
}
lenc=lena;
while((cx[lenc]==0)&&lenc>1)
lenc--;
for (i=lenc;i>=1;i--)
printf("%d",cx[i]);
}
if (compare(a,b)==0)
{
printf("0");
return 0;
}
if (compare(a,b)==-1)
{
printf("-");
for (i=1;i<=lenb;i++)
{
cx[i]=bx[i]-ax[i];
if (cx[i]<0)
{
cx[i]=10+cx[i];
bx[i+1]--;
}
}
lenc=lenb;
while((cx[lenc]==0)&&lenc>1)
lenc--;
for (i=lenc;i>=1;i--)
printf("%d",cx[i]);
}
return 0;
}