求纠错
查看原帖
求纠错
114457
Forest_Prince楼主2020/7/21 16:22

我的代码只能保证被减数比减数大

如果被减数比减数小就不对

找不到哪里出错

#include<iostream>
#include<cstring>
#include<string>
#include<cmath>

using namespace std;

const int MAXN=10086+5;

string a,b;
int numa[MAXN],numb[MAXN],ans[MAXN];
int sizea,sizeb,s=1;
bool check=false;

int main(){
	cin>>a>>b;
	sizea=a.size();
	sizeb=b.size();
	if(sizea<sizeb||(a<b&&sizea==sizeb)){
		swap(a,b);
		check=true;
	} 
	if(check) cout<<"-";
	for(int i=0;i<sizea;i++){
		numa[sizea-i]=a[i]-'0';
	}
	for(int i=0;i<sizeb;i++){
		numb[sizeb-i]=b[i]-'0';
	}
	int i=1;
	while(i<=sizea||i<=sizeb){
		if(numa[i]<numb[i]){
			numa[i+1]--;
			numa[i]+=10;	
		}
		ans[i]=numa[i]-numb[i];
		i++;
	} 
	int tot=i;
	while(ans[tot]==0&&tot>1) tot--;
	for(int i=tot;i>=1;i--){
		cout<<ans[i];
	}
	return 0;
	
}
2020/7/21 16:22
加载中...