90 #6 WA
查看原帖
90 #6 WA
1007419
xiao__楼主2023/8/15 20:47
#include<bits/stdc++.h>
#define max(x,y) x>=y?x:y
using namespace std;
int numa[10005],numb[10005],ans[10005];
signed main(){
	string a,b;
	cin>>a>>b;
	if(b.size()>a.size()||(b.size()==a.size()&&b>a)){
		swap(a,b);
		putchar('-');
	}
	for(int i=0;i<a.size();i++){
		if(a[i]!='0'){
			a=a.substr(i);
			break;
		}
	}
	for(int i=0;i<b.size();i++){
		if(b[i]!='0'){
			b=b.substr(i);
			break;
		}
	}
	for(int i=0;i<a.size();i++){
		numa[a.size()-i]=a[i]-'0';
	}
	for(int i=0;i<b.size();i++){
		numb[b.size()-i]=b[i]-'0';
	}
	int len=max(a.size(),b.size()),x=0;
	for(int i=1;i<=len;i++){
		ans[i]=numa[i]-numb[i]+x;
		if(ans[i]<0){
			ans[i]+=10;
			x=-1;
		}else{
			x=0;
		}
	}
//	while(ans[len]==0||len>1) len--;
	for(int i=len;i>=1;i--) cout<<ans[i];
	return 0;
}

注释掉的判断前导零错了,解开了10分

话说是不是太水了

2023/8/15 20:47
加载中...