高精度减法

18级李灏冬  •  4年前


#include<bits/stdc++.h>

using namespace std;

string a,b;
int a1[100],a2[100];
int len1,len2;
int flag;

bool cmp(string num1,string num2){
    if(num1.size()!=num2.size()){
        return num1.size()<num2.size();
    }
    return num1<num2;
}

int main(){
    cin>>a>>b;
    if(cmp(a,b)){
        flag=true;
        swap(a,b);
    }
    len1=a.size();
    len2=b.size();
    for(int i=0;i<len1;i++){
        a1[i]=a[len1-i-1]-'0';
    }
    for(int i=0;i<len2;i++){
        a2[i]=b[len2-i-1]-'0';
    }
    for(int i=0;i<len1;i++){
        a1[i]-=a2[i];
    }
    for(int i=0;i<len1;i++){
        while(a1[i]<0){
            a1[i+1]--;
            a1[i]+=10;
        }
    }
    while(len1>1 && a1[len1-1]==0){
        len1--;
    }
    if(flag==true){
        cout<<"-";
    }
    for(int i=len1-1;i>=0;i--){
        cout<<a1[i];
    }
    cout<<endl;
    return 0;
}

评论: