高精度减法

#include <bits/stdc++.h>
using namespace std;
string a,b;
bool f(){
    if(a.size()>b.size()){
        return true;
    }else{
        for(int i = 0;i<a.size();i++){
            if(b[i]>a[i]){
                return false;
            }
        }
    }
    return true;
}
int main() {
    cin>>a>>b;
    if(!f()){
        string a1 = a;
        a = b;
        b = a1;
        cout<<"-";
    }
    vector<int> x,y,sum;
    for(int i = a.size()-1;i>=0;i--){
        x.push_back(a[i]-'0');
    }
    for(int i = b.size()-1;i>=0;i--){
        y.push_back(b[i]-'0');
    }
    for(int i = 0;i<a.size();i++){
        if(i>=y.size()){
            y.push_back(0);
        }
        if(x[i]<y[i]){
            x[i] += 10;
            x[i+1] -= 1;
        }
        sum.push_back(x[i]-y[i]);
    }
    bool have = true;
    for(int i = sum.size()-1;i>=0;i--){
        if(sum[i]==0 && have && i>=1){
            continue;
        }
        have = false;
        cout<<sum[i];
    }
    return 0;
}#include <bits/stdc++.h>
using namespace std;
string a,b;
bool f(){
    if(a.size()>b.size()){
        return true;
    }else{
        for(int i = 0;i<a.size();i++){
            if(b[i]>a[i]){
                return false;
            }
        }
    }
    return true;
}
int main() {
    cin>>a>>b;
    if(!f()){
        string a1 = a;
        a = b;
        b = a1;
        cout<<"-";
    }
    vector<int> x,y,sum;
    for(int i = a.size()-1;i>=0;i--){
        x.push_back(a[i]-'0');
    }
    for(int i = b.size()-1;i>=0;i--){
        y.push_back(b[i]-'0');
    }
    for(int i = 0;i<a.size();i++){
        if(i>=y.size()){
            y.push_back(0);
        }
        if(x[i]<y[i]){
            x[i] += 10;
            x[i+1] -= 1;
        }
        sum.push_back(x[i]-y[i]);
    }
    bool have = true;
    for(int i = sum.size()-1;i>=0;i--){
        if(sum[i]==0 && have && i>=1){
            continue;
        }
        have = false;
        cout<<sum[i];
    }
    return 0;
}

 

posted @ 2024-10-24 22:13  王一行(小号)  阅读(5)  评论(0编辑  收藏  举报