60求助(负数错误)
查看原帖
60求助(负数错误)
566715
muwangjunxi楼主2021/12/21 21:14
#include<bits/stdc++.h>
using namespace std;
int fff;
char arr[1000000],brr[1000000];
stack<int> stk1,stk2,stk3;
void abc2(bool f){
	if(stk1.empty()&&stk2.empty()){//if(f==1)stk3.push(1);
		return;
	}
	if(stk1.empty())stk1.push(0);
	if(stk2.empty())stk2.push(0);
 	int a=stk1.top(),b=stk2.top();
	stk1.pop();stk2.pop();
	if(a-b-f<0){
		stk3.push(a-b-f+10);abc2(1);
	}
	else{
		stk3.push(a-b-f);abc2(0);
	}
}
void abc3(){
	if(fff==-1)cout<<'-';
	bool f=0;
	while(!stk3.empty()){
		while(f==0&&stk3.size()>1){
			if(stk3.top()!=0){
				f=1;break;
			}
			stk3.pop();
		}
			cout<<stk3.top();
		stk3.pop();
	}
}
int main(){
	cin>>arr;
	cin>>brr;
	fff=memcmp(arr,brr,max(strlen(arr),strlen(brr)));
	if(fff==1){
		for(int i=0;arr[i]!='\0';i++)
			stk1.push(arr[i]-'0');
		for(int i=0;brr[i]!='\0';i++)
			stk2.push(brr[i]-'0');
	}
	if(fff==0){
		cout<<0;
		return 0;
	}
	if(fff==-1){
		for(int i=0;arr[i]!='\0';i++)
			stk2.push(arr[i]-'0');
		for(int i=0;brr[i]!='\0';i++)
			stk1.push(brr[i]-'0');
	}
	abc2(0);
	abc3();
	return 0;
}

测试3 入: 88460914424991 4291703115049359 出:5796757799375632 正:-4203242200624368

2021/12/21 21:14
加载中...