60分蒟蒻求调
查看原帖
60分蒟蒻求调
750535
Trubiacy_楼主2023/7/11 16:22
#include <bits/stdc++.h>
using namespace std;
const int N=2e4;
string A,B;
int x,y,a[N],b[N],c[N];
bool f;
int sub(){
	int i;
	if(f==0){
		for(i=1;i<=max(x,y);i++){
			c[i]=a[i]-b[i]+c[i];
			if(c[i]<0){
				c[i+1]--;
				c[i]+=10;
			}
		}
	}
	else{
		for(i=1;i<=max(x,y);i++){
			c[i]=b[i]-a[i]+c[i];
			if(c[i]<0){
				c[i+1]--;
				c[i]+=10;
			}
		}
	}
	while(c[i]==0&&i>1) i--;
	return i;
}
int main()
{
	cin>>A>>B;
	x=A.size();y=B.size();
	if(x>y) f=0;
	else if(y>x) f=1;
	else{
		for(int i=1;i<=x;i++){
			if(A[i]>B[i]){
				f=0;break;
			}
			if(A[i]<B[i]){
				f=1;break;
			}
		}
	}
	for(int i=1;i<=x;i++) a[i]=A[x-i]-'0';
	while(a[x]==0&&x>1) x--;
	for(int i=1;i<=y;i++) b[i]=B[y-i]-'0';
	while(a[y]==0&&y>1) y--;
	int n=sub();
	if(f==1) cout<<'-';
	for(int i=n;i>0;i--) printf("%d",c[i]);
	return 0;
}

2023/7/11 16:22
加载中...