14 条题解

  • 0
    @ 2026-2-8 11:41:34
    using namespace std;
    string s,p;
    vector<int>v,t,res;
    bool ifbigger(vector<int> x,vector<int> y){
    	if(x.size()<y.size())return 0;
    	if(x.size()>y.size())return 1;
    	for(int i=x.size()-1;i>=0;i--){
    		if(x[i]>y[i]){
    			return true;
    		}
    		else if(x[i]<y[i]){
    			return false;
    		}
    	}
    	return true;
    }
    bool vis[10089],vis1[10089];
    int main(){
    	cin>>s>>p;
    	for(int i=0;i<s.size();i++){
    		if(s[i]!='0')break;
    		if(s[i]=='0'){
    			vis[i]=1;
    		}
    	}
    	for(int i=0;i<p.size();i++){
    			if(p[i]!='0')break;
    			if(p[i]=='0'){
    				vis1[i]=1;
    			}
    	}
    	for(int i=s.size()-1;i>=0;i--){
    		if(vis[i]==1)continue;
    		v.push_back(s[i]-'0');
    	}
    	for(int i=p.size()-1;i>=0;i--){
    		if(vis1[i]==1)continue;
    		t.push_back(p[i]-'0');
    	}
    	if(s==p){
    		cout<<0<<endl;
    		return 0;
    	}
    	if(ifbigger(v,t)){
    		for(int i=0;i<v.size()-t.size();i++){
    			t.push_back(0);
    		}
    		for(int i=0;i<min(v.size(),t.size());i++){
    			if(v[i]>=t[i]){
    				res.push_back(v[i]-t[i]);
    			}
    			else{
    				v[i+1]--;
    				res.push_back(v[i]+10-t[i]);
    			}
    		}
    		for(int i=t.size();i<v.size();i++){
    			if(i==v.size()-1 && v[i]==0 && v.size()>1){
    				break;
    			}
    			res.push_back(v[i]);
    		}
    		for(int i=0;i<res.size();i++){
    			if(res[i]<0){
    				res[i]+=10;
    				res[i+1]--;
    			}
    		}
    		res.push_back(0);
    		bool f1=0;
    		for(int i=res.size()-2;i>=0;i--){
    			if(res[i-1]<0){
    				res[i-1]+=10;
    				res[i]--;
    			}
    			if(res[i]==0 && f1==0 && res.size()>2){
    				continue;
    			}
    			cout<<res[i];
    			f1=1;
    		}
    	}
    	else{
    		for(int i=0;i<t.size()-v.size();i++){
    			v.push_back(0);
    		}
    		for(int i=0;i<min(v.size(),t.size());i++){
    			if(t[i]>=v[i]){
    				res.push_back(t[i]-v[i]);
    			}
    			else{
    				t[i+1]--;
    				res.push_back(t[i]+10-v[i]);
    			}
    		}
    		for(int i=v.size();i<t.size();i++){
    			if(i==t.size()-1 && t[i]==0 && t.size()>1){
    				break;
    			}
    			res.push_back(t[i]);
    		}
    		for(int i=0;i<res.size();i++){
    			if(res[i]<0){
    				res[i]+=10;
    				res[i+1]--;
    			}
    		}
    		cout<<"-";
    		res.push_back(0);
    		bool f1=0;
    		for(int i=res.size()-2;i>=0;i--){
    			if(res[i-1]<0){
    				res[i-1]+=10;
    				res[i]--;
    			}
    			if(res[i]==0 && f1==0 && res.size()>2){
    				continue;
    			}
    			cout<<res[i];
    			f1=1;
    		}
    	}
    }
    
    

    信息

    ID
    13833
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    14
    已通过
    0
    上传者