为什么啊
别人都是T6没过,我是只过T6? orz
在本地编译都对的,还用了 python 验证qaq
还有麻烦请大佬解答一下注释里的问题
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define ll long long
int a[11000], b[11000],c[11000];
int cmp (int a[], int b[], int cnta, int cntb) {
int t = cnta - cntb;
if (t > 0) return 1;
else if (t < 0) return -1;
else {
for (int i = cnta - 1; i >= 0; i--) {
if (a[i] - b[i] > 0) return 1;
else if (a[i] - b[i] < 0 ) return -1;
}
}
return 0;
}
int sub(int a[], int b[], int c[], int cnta, int cntb, int cntc) {
int t = 0;
for (int i = 0; i < cnta; i++) {
t = a[i] - t;
if (i < cntb) t -= b[i];
c[i] = (t + 10) % 10;
if (t < 0) t = 1;
else t = 0;
cntc++;
}
while (c[cntc - 1] == 0 && cntc > 1) cntc--; // 一定要是c[cntc - 1], 若c[cntc] 则会只剩一位数,为什么呢?
return cntc;
}
int main() {
char m[100005], n[100005];
int cnta = 0, cntb = 0;
gets(m);
gets(n);
for (int i = strlen(m) - 1; i >= 0; i--) {
a[cnta++] = m[i] - '0';
}
for (int i = strlen(n) - 1; i >= 0; i--) {
b[cntb++] = n[i] - '0';
}
if (cmp(a, b, cnta, cntb) > 0) {
int cntc = sub(a, b, c, cnta, cntb, 0);
for (int i = cntc - 1; i >= 0; i--)
printf("%d", c[i]);
}
else if (cmp(a, b, cnta, cntb) < 0) {
int cntc = sub(b, a, c, cntb, cnta, 0);
printf("-");
for (int i = cntc - 1; i >= 0; i--)
printf("%d", c[i]);
}
else printf("0");
return 0;
}