代码如下,只有测试点6是WA,所以特意下载了测试点6的数据在自己电脑上试了,结果是对的,但在线提交就显示WA。不知道问题出在什么地方?
#include<iostream>
#include<string>
using namespace std;
int main() {
string sa,sb,tmp;
cin>>sa>>sb;
int flag=0; //0表示结果为正,1表示结果为负
//把较大的数放在sa当中
if(sa.size()<sb.size() || (sa.size()==sb.size() && sa<sb))
{
tmp=sa;
sa=sb;
sb=tmp;
flag=1;
}
int a[11000]={0},b[11000]={0},ans[11000]={0};
//倒序存放在数组中
for(int i=0;i<=sa.size()-1;i++)
a[i]=sa[sa.size()-1-i]-'0';
for(int j=0;j<=sb.size()-1;j++)
b[j]=sb[sb.size()-1-j]-'0';
int length = sa.size();
int t=0; //借位
for(int k=0;k<=length-1;k++)
{
ans[k]=(a[k]-b[k]+10-t)%10;
t=(a[k]-b[k]-t)>=0 ? 0 : 1;
}
while(ans[length-1]==0 && length>=0) //处理类似3333-3321结果的高位0
length--;
if(flag==1) //处理相减结果为负数的情况
cout<<"-";
for(int m=length-1;m>=0;m--)
cout<<ans[m];
if(length==0)
cout<<"0";
return 0;
}