1 条题解

  • -2
    @ 2023-7-22 11:06:21

    较简单的高精度题,但要判断大小。

    #include<iostream>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    int a[100010],b[100010],c[100010];
    bool lower(string A,string B){
        if (A.size()<B.size()){
            return true;
        }else{
            return A.size()==B.size()&&A.compare(B)<0;
        }
        return false;
    }
    int main(){
        freopen("subtraction.in","r",stdin);
        freopen("subtraction.out","w",stdout);
    	string A,B;
    	cin>>A>>B;
    	bool is=0;
    	int len=max(A.size(),B.size());
    	if (lower(A,B)){
    		swap(A,B);
    		is=1;
    	}
    	for (int i=A.size()-1,j=0;i>=0;i--,j++){
    		a[j]=A[i]-'0';
    	}
    	for (int i=B.size()-1,j=0;i>=0;i--,j++){
    		b[j]=B[i]-'0';
    	}
    	
    	for (int i=0;i<len;i++){
    		c[i]+=a[i]-b[i];
    		if (c[i]<0){
    			c[i+1]--;
    			c[i]+=10;
    		}
    	}
    	for (int i=0;i<100010;i++){
    		c[i+1]+=c[i]/10;
    		c[i]%=10;
    	}
    	for (;!c[len-1];){
    		len--;
    	}
    	if (is==1){
    		cout<<'-';
    	}
    	bool r=0;
    	for (int i=len-1;i>=0;i--){
    		cout<<c[i];
    		r=1;
    	}
    	if (!r) cout<<0; 
    	return 0;
    }
    
    • 1

    信息

    ID
    427
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    75
    已通过
    25
    上传者