90求调
查看原帖
90求调
818698
liujb楼主2024/8/30 15:26

求调

#include <bits/stdc++.h>
using namespace std;

string a, b, ans = "";
int flag;
bool cmp(string a, string b) {
    if(a.size() != b.size())
        return a.size() < b.size();
    else {
        for (int i = 0; i < a.size(); i ++ ) {
            if(a[i] != b[i])
                return a[i] < b[i];
        }
        return false;
    }
}

void minuss(string a, string b) {
    if(cmp(a, b)) {
        swap(a, b);
        flag = 1;
    }
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
    for (int i = 0; i < b.size(); i ++ ) {
        if(a[i] < b[i]) {
            a[i + 1] -= 1;
            ans += '0' + a[i] - b[i] + 10;
        }
        else {
            ans += '0' + a[i] - b[i];
        }
    }
    if(a.size() > b.size()) {
        for (int i = b.size(); i < a.size(); i ++ )
            ans += a[i];
    }
    //去前导零
    int idx = ans.size() - 1;
    while(ans[idx] == '0' && idx) {
        idx--;
    }
    ans = ans.substr(0, idx + 1);
    if (flag)
    {
        cout << '-';
    }
    for (int i = ans.size() - 1; i >= 0; i --) {
        cout << ans[i];
    }
}

int main()
{
    cin >> a >> b;
    minuss(a, b);

    return 0;
}
2024/8/30 15:26
加载中...