几乎跟着教程抄的,为啥只对了一个呀
查看原帖
几乎跟着教程抄的,为啥只对了一个呀
853956
caiGouCaiJi楼主2023/2/16 00:24
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>

using namespace std;

char a[10090] , b[10090] , aa[10090] , bb[10090] , c[10090],t[10090];
bool flag =true;

bool cmp(char* a , char* b) {
    int la = strlen(a) , lb = strlen(b);
    if (la != la)return la > lb;
    for(int i=0;i<la;i++){
        if(a[i]!=b[i])return a[i]>b[i];
    }
    return true;
}

int main() {
    scanf("%s",a);
    scanf("%s",b);

    if (!cmp(a , b))
    {
        flag = false;
        strcpy(t , a);
        strcpy(a , b);
        strcpy(b , t);
    }

    int la = strlen(a) , lb = strlen(b);
    for (int i = 0;i < la;i++)
    {
        aa[la - i] = a[i] - '0';
    }
    for (int i = 0;i < lb;i++)
    {
        bb[la - i] = b[i] - '0';
    }

    int lc = max(la , lb);
    for (int i = 1;i <= lc;i++)
    {
        if (aa[i] < bb[i])
        {
            aa[i + 1]--;
            aa[i] += 10;
        }
        c[i] = aa[i] - bb[i];

    }
    while (c[lc] == 0 && lc > 1)lc--;
    if (flag==false)printf("-");
    for (int i = lc;i >0;i--)
        printf("%d" , c[i]);

    return 0;

}
2023/2/16 00:24
加载中...