top1编程
← 返回题目
题解

【基础】高精度减法2

1 条题解

  • 0
    @ 2026-7-28 22:10:03
    #include<bits/stdc++.h>
    using namespace std;
    string s1,s2;
    int a[245],b[245],c[245],p;
    int main () {
    	char f='+';
    	cin>>s1>>s2;
    	if(s1.size()<s2.size()||s1.size()==s2.size()&&s2>s1){
    		swap(s1,s2);
    		f='-';
    	}
    	for(int i=0;i<s1.size();i++){
    		a[s1.size()-1-i]=s1[i]-'0';
    	}
    	for(int i=0;i<s2.size();i++){
    		b[s2.size()-1-i]=s2[i]-'0';
    	}
    	int len=s1.size();
    	for(int i=0;i<len;i++){
    		if(a[i]<b[i]){
    			a[i+1]=a[i+1]-1;
    			a[i]=a[i]+10;
    		}
    		c[i]=a[i]-b[i];
    	}
    	if(f=='-'){
    		cout<<f;
    	}
    	for(int i=len-1;i>=0;i--){
    		if(c[i]!=0){
    			p=i;
    			break;
    		}
    	}
    	for(int i=p;i>=0;i--){
    		cout<<c[i];
    	}
    	return 0;
    }
    
    • 1