高精度

高精度减法

#include<iostream>
using namespace std;
const int maxn = 10500;
int A[maxn], B[maxn], ans[maxn];
string a, b;
int num;

void pd()
{
    if(a.size() < b.size() || (a.size() == b.size() && a < b))
    {
        cout << "-";
        swap(a, b);
    }
}

int main()
{
    cin >> a >> b;
    pd();
    for(int i = 0; i < a.size(); i ++)
        A[a.size() - i - 1] = (a[i] - '0');
    for(int i = 0; i < b.size(); i ++)
        B[b.size() - i - 1] = (b[i] - '0');
    for(int i = 0; i < a.size(); i ++)
    {
        if(A[i] < B[i])
        {
            ans[i] = A[i] + 10 - B[i];
            A[i+1] --; 
        }
        else ans[i] = A[i] - B[i];
    }
    num = a.size()-1;
    while(!ans[num]) num--;
    if(num == 0 && ans[num] == 0)
        cout << "0";
    else {
        for(int i = num; i >= 0; i --)
            cout << ans[i];
    }
    if(a == b) cout << "0"; //注意这里
    return 0;

}

 

posted @ 2020-09-15 18:44  ATKevin  阅读(124)  评论(0编辑  收藏  举报