60分求调
查看原帖
60分求调
234085
LuminousYT楼主2023/11/2 16:59
#include<bits/stdc++.h>
#define MAXN 0x7ffffff
//#pragma GCC optimize(2)
using namespace std;
void sub( string s1, string s2);


const int N=10050;

int main()
{
//	freopen("P2142_3","r",stdin); 
	string s1,s2;
	cin>>s1>>s2;
//	cout<<s1.compare(s2);
	sub(s1,s2);
	//add(s1,s2);
	return 0;
} 
void sub( string s1, string s2)
{
	int a[N],b[N],c[N];
	bool x=false,flag=true;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	if( s1.compare(s2)<0 )
	{
		flag=false;
		string temp;
		temp=s1,s1=s2,s2=temp;
	}
	a[0]=s1.length(),b[0]=s2.length();
	int maxl=max(a[0],b[0]);
	for(int i=1;i<=a[0];++i)	a[i]=s1[a[0]-i]-'0';
	for(int i=1;i<=b[0];++i)	b[i]=s2[b[0]-i]-'0';
	int j;
	for(j=1;j<=maxl;++j)
	{
		if(a[j]-b[j]<0)	a[j]+=10,a[j+1]--;
		c[j]=a[j]-b[j];
	}
	if(!flag)	cout<<"-";
	for(int i=maxl;i>=1;--i)
	{
		if(!x && c[i]==0)	continue;
		x=true;
		cout<<c[i];
	}
	if(!x)	cout<<"0";
	
}

测试点1 3 4 5WA 在测试的时候发现两个短的字符串结果是正确的,但是两条长的结果就错了

2023/11/2 16:59
加载中...