高精度减法模板

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

const int maxn = 1000;
char s1[maxn], s2[maxn], s3[maxn];
int a[maxn], b[maxn];

int main()
{
    int la, lb, m=0;
    cin >> s1 >> s2;
    la = strlen(s1);
    lb = strlen(s2);
    if(strcmp(s1, s2) == 0)
    {
        cout << 0;
        return 0;
    }
    if(la<lb || la==lb && strcmp(s1, s2)<0 )
    {
        cout << "-";
        strcpy(s3, s1);
        strcpy(s1, s2);
        strcpy(s2, s3);
    }
    la = strlen(s1);
    lb = strlen(s2);
    for(int i=1;i<=la;i++)
        a[i] = s1[la-i] - 48;
    for(int i=1;i<=lb;i++)
        b[i] = s2[lb-i] - 48;
    for(int i=1;i<=la;i++)
    {
        if(a[i] < b[i])
        {
            a[i+1]--;
            a[i] += 10;
        }
        a[i] -= b[i];
    }

    while(a[la] == 0 && la>1)
        la--;
    for(int i=la;i>=1;i--)
        cout << a[i];
    cout << endl;

    return 0;
}

猜你喜欢

转载自blog.csdn.net/SuperBvs/article/details/79286468