求助!!!为什么减/被减数不能末尾带0
查看原帖
求助!!!为什么减/被减数不能末尾带0
1016066
weizekai楼主2024/3/13 17:36

只要减数或被减数末尾有0就可能出现一些错误

#include<iostream>
#include<bits/stdc++.h>
#include<string>
#include<map>
using namespace std;
//char a[99999],b[999999];
string a,b,c;
int d[999999],e[999999],f[999999],misc,maxsize,maxx;
int main(){
	
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	
	cin>>a>>b;
	
	maxsize=max(a.size(),b.size());
	//maxsize=max(strlen(a),strlen(b));
	
	if(a.size()>=b.size()){
		maxx=1;
	}
	for(int i=a.size()-1,j=1;i>=0;i--,j++){
		d[j]=a[i]-'0';
	}
	for(int i=b.size()-1,j=1;i>=0;i--,j++){
		e[j]=b[i]-'0';
	}
	/*for(int i=strlen(a)-1,j=1;i>=0;i--,j++){
		d[j]=a[i]-'0';
	}
	for(int i=strlen(b)-1,j=1;i>=0;i--,j++){
		e[j]=b[i]-'0';
	}*/

	if(maxx==1){
		for(int i=1;i<=maxsize;i++){
		f[i]=d[i]-e[i];
		if(f[i]<0){
			f[i]+=10;
			f[i+1]-=1;
		}
	
	}
	
	}else if(maxx!=1){
		for(int i=1;i<=maxsize;i++){
		f[i]=e[i]-d[i];
		//cout<<f[i]<<endl;
		if(f[i]<0){
			f[i]+=10;
			f[i+1]-=1;
		}
	}
	cout<<"-";
	for(int i=maxsize;i>=1;i--){
		cout<<f[i];
		
	}
	
			return 0;
		
		
	}
	
	for(;!f[maxsize];) maxsize--;
	for(int i=maxsize;i>=1;i--){
		cout<<f[i];
	}

	
	return 0;
} 
2024/3/13 17:36
加载中...