与测试点数据结果一致,但始终显示WA,求助大神问题在哪里?
查看原帖
与测试点数据结果一致,但始终显示WA,求助大神问题在哪里?
818822
timegrass楼主2022/10/11 15:31

代码如下,只有测试点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;
}
 
2022/10/11 15:31
加载中...