起因是本人在一个为数不多空闲的下午刷题ing,看到了A+B problem。“就这?”从而忽略了高精这俩字,然后喜提40分。
于是开始研究何为高精。
#include<iostream>
#include<string.h>
#include<cstring>
using namespace std;
const int N = 1000;
int a[N], b[N], c[N];
char s1[N], s2[N];
int main()
{
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
int j = 1;
bool x = 0;
cin >> s1 >> s2;
int len1 = strlen(s1);
int len2 = strlen(s2);
for (int i = 1; i <= len1; i++) {
a[i] = s1[len1 - i] - '0';
}
for (int i = 1; i <= len2; i++) {
b[i] = s2[len2 - i] - '0';
}
for (j; j <= max(len1, len2)+1; j++) {
c[j] = a[j] + b[j];
if (c[j] > 9) {
c[j] = c[j] % 10;
a[j + 1]++;
}
}
c[0] = j;
if (c[j + 1] > 0) {
c[0]++;
}
for (int i = c[0]; i > 0; i--) {
if (c[i] == 0 && x == 0) {
continue;
}
x = 1;
cout << c[i];
}
if (x == false) cout << 0;
return 0;
}
其中忘了这一步,导致喜提wa
if (x == false) cout << 0;
如果没有这步,0+0输出为空。