#include<bits/stdc++.h>
using namespace std;
const int size = 256;
const int powten[8]{1,10,100,1000,10000,100000,1000000,10000000};
class bigInt{
private:
long long value[size];
public:
void add(bigInt num){
for(int i=0;i<size-1;i++){
this->value[i]+=num.value[i];
this->value[i+1]+=this->value[i]/100000000;
this->value[i]%=100000000;
}
this->value[size-1]+=num.value[size-1];
return;
}
void set(char* num){
int len = strlen(num);
int temp=0;
for(int i=0;i<len;i++){
temp=0;
for(int j=0;j<8;j++){
int length = strlen(num);
if(!length)break;
temp+=(num[length-1]-'0')*powten[j];
num[length-1]='\0';
}
value[i]=temp;
}
return;
}
void puts(){
int cur = size;
while(!value[--cur]);
printf("%lld",value[cur]);
while(cur){
printf("%08lld",value[--cur]);
}
}
}A,B;
int main(){
char a[1000], b[1000];
cin>>a>>b;
A.set(a);
B.set(b);
A.add(B);
A.puts();
}
只有0+0
输出炸了,但是其他都能对。自测的话,0+0会出乱码,怎么破