60分求助QWQ
查看原帖
60分求助QWQ
1271314
zhizhenmayixun楼主2024/7/12 10:05
#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int a[N],b[N];
int in[N];
int main(){
	char s[N],t[N];
	cin>>s>>t;
	int n=strlen(s),m=strlen(t);
	int mx=max(n,m);
	for(int i=0;i<n;i++){
		a[i]=s[i]-'0';
	}
	for(int j=0;j<m;j++)
	{
		b[j]=t[j]-'0';
	}
	reverse(a,a+n);
	reverse(b,b+m);
	int flag=0;
	if(n!=m){
		flag = n<m;
	}
	else{
		for(int i=n-1;i>=0;i--){
			if(a[i]!=b[i]){
				flag= a[i]<b[i];
				break;
			}
		}
	}
	for(int i=0;i<=mx;i++){
		if(flag) a[i]=b[i]-a[i];
		else a[i]=a[i]-b[i];
		if(a[i]<0) 
			a[i]+=10,a[i+1]-=1;
	}	
	while(!a[mx]){
		--mx;
	} 
	if(flag) cout<<'-';
	int step=0;
	for(int i=mx;i>=0;i--){
		step+=a[i];
		cout<<a[i];
	}
	if(step<1){
		cout<<0;
	}
	return 0;
}
2024/7/12 10:05
加载中...