90分#7求助TAT
查看原帖
90分#7求助TAT
325887
Kizzen楼主2023/3/2 21:14

救命啊,写了好久 #7就是过不了,排查不出问题

#include <iostream>
#include<sstream>
#include<algorithm>
#include<string>
using namespace std;

int stringCompare(string a,string b){
    if(a.size()==b.size()){
        if(a>b)return 1;
        if(a<b) return -1;
        else return 0;
    }
    if(a.size()>b.size())
        return 1;
    else return -1;
}
string bigsub(string a,string b){
    if(a.find_first_not_of('0')!=string::npos)
        a = a.substr(a.find_first_not_of('0'));
    if(b.find_first_not_of('0')!=string::npos)
        b = b.substr(b.find_first_not_of('0'));
    long long lenA = a.length();
    long long lenB = b.length();
    long long len = max(lenA,lenB);
    if(stringCompare(b,a)>0)
        return "-"+bigsub(b,a);
    string ans(len,'0');
    reverse(a.begin(),a.end());
    reverse(b.begin(),b.end());

    for(int i=0;i<lenA;i++){
        ans[i]=a[i];
    }
    int num=0;
    for(int i = 0;i<lenA;i++){

        if(i<lenB){
            num += (ans[i]-'0')-(b[i]-'0');
            if(num<0){
                num+=10;
                ans[i]=num+'0';
                num	=-1;
            }else{
                ans[i]=num+'0';
                num=0;
            }
        }else{
            ans[i]+=num;
            num=0;
        }
    }
    reverse(ans.begin(),ans.end());
    if(ans.find_first_not_of('0')!=string::npos)
        ans=ans.substr(ans.find_first_not_of('0'));
    else{
        return "0";
    }
    return ans;
}
int main() {
    string a;
    string b;
    cin>>a;
    cin>>b;
    cout<<bigsub(a,b)<<endl;
    return 0;
}
2023/3/2 21:14
加载中...