Code
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 128;
struct bigInt{
int num[N]; // num[0]存长度,倒序不压位
void plus(const bigInt &x){
int len = max(num[0], x.num[0]);
num[0] = len;
for (int i = 1; i <= len; ++i){
num[i] += x.num[i];
if(num[i] >= 10){
num[i]-=10;
num[i + 1]++;
}
}
if(num[len + 1])num[0] = len + 1;
}
inline void read(){
memset(num, 0, sizeof(num));
char ch = getchar();
while('0' <= ch && ch <= '9'){
num[0]++;
num[num[0]] = ch - 48;
ch = getchar();
}
for(int i = 1; i <= num[0] / 2; ++i)swap(num[i], num[num[0] - i + 1]);
}
inline void writeln(){
for(int i = num[0]; i >= 1; --i)printf("%d", num[i]);
printf("
");
}
inline bool zeroQ(){
if(num[0] == 1 && num[1] == 0)return true;
return false;
}
};
int main(int argc, char const *argv[]){
bigInt a, b;
a.read();
b.read();
while(!b.zeroQ()){
a.plus(b);
b.read();
}
a.writeln();
return 0;
}
Review