P2142 高精度减法
WA了第七个点
测试点数据比较长感觉貌似没有全部读进来
#include<bits/stdc++.h>
using namespace std;
string c;
int a[10100],b[10100],la,lb;
int flag=0;
int main()
{
cin>>c;
la=c.length();
for(int i=1;i<=la;i++)
a[i]=c[la-i]-'0';
cin>>c;
lb=c.length();
for(int i=1;i<=lb;i++)
b[i]=c[lb-i]-'0';
if(la<lb)
{
printf("-");
flag=1;
}
else if(la==lb)
for(int i=la;i>=1;i--)
if(a[i]<b[i])
{
printf("-");
flag=1;
break;
}
else
break;
if(flag==0)
{
for(int i=1;i<=lb;i++)
{
a[i]=a[i]-b[i];
if(a[i]<0)
{
a[i+1]--;
a[i]+=10;
}
}
while(a[la]==0&&la>1)
la--;
for(int i=la;i>=1;i--)
printf("%d",a[i]);
}
else
{
for(int i=1;i<=lb;i++)
{
b[i]=b[i]-a[i];
if(b[i]<0)
{
b[i+1]--;
b[i]+=10;
}
}
while(b[lb]==0&&lb>=1)
lb--;
for(int i=lb;i>=1;i--)
printf("%d",b[i]);
}
printf("\n");
return 0;
}