rt,我的代码有点不一样,没找到一样的
#include <bits/stdc++.h>
using namespace std;
const int ten = 10;
const int N = 1e5 + 10;
struct gaojing {
int n;
int z[N];
char s[N];
gaojing() {
n = 1;
memset(z, 0, sizeof(z));
}
void read() {
scanf("%s", &s + 1);
bool neg = false;
if(s[1] == '-') neg == true;
int l = strlen(s + 1);
for(int i = 1, j = l; i <= l - neg; ++ i, -- j) {
z[i] = s[j] - '0';
if(neg) z[i] = -z[i];
}
n = l - neg;
}
void print() {
for(int i = n; i >= 1; -- i)
printf("%d", z[i]);
}
}a, b;
gaojing operator+(const gaojing &a, const gaojing &b) {
gaojing c;
c.n = max(a.n, b.n);
for(int i = 1; i <= c.n; ++ i) {
c.z[i] = a.z[i] + b.z[i];
c.z[i + 1]+= c.z[i] / ten;
c.z[i] = c.z[i] % ten;
}
if(c.z[c.n + 1] != 0) ++ c.n;
bool neg = false;
if(c.z[c.n] < 0) neg = true;
for(int i = c.n; i >= 1; ++ i) {
if(c.z[i] < 0 && neg == false) {
c.z[i] += ten;
c.z[i + 1] --;
}
if(c.z[i] > 0 && neg == true) {
c.z[i] -= ten;
c.z[i + 1] ++;
}
}
return c;
}
signed main() {
a.read();
b.read();
(a + b).print();
return 0;
}