一份高精加法代码如下
#include <cstdio>
#include <algorithm>
#include <cstring>
class BigNumber{
private:
int a[10000],len;
public:
void input(){
char ch;
while(ch = getchar(),ch >= '0' && ch <= '9'){
a[len++] = ch-'0';
}
std::reverse(a,a+len);
}
void print(){
for(int i = len-1;i >= 0;i--){
putchar('0'+a[i]);
}
}
BigNumber(): len(0){
memset(a,0,sizeof(a));
}
BigNumber operator +(const BigNumber &n) const{
BigNumber tmp;
tmp = n;
for(int i = 0;i < len;i++){
tmp.a[i] += a[i];
}
for(int i = 0;i < len;i++){
if(tmp.a[i] >= 10){
tmp.a[i] %= 10;
tmp.a[i+1]++;
}
}
for(int i = 9999;i >= 0;i--){
if(tmp.a[i]){
tmp.len = i+1;
break;
}
}
return tmp;
}
};
int main(){
BigNumber a,b;
a.input();
b.input();
(a+b).print();
return 0;
}
输入
123
123
本地运行结果
246
你谷运行结果
123
去了其它OJ交了这份高精加代码,也是通过的
这是什么神奇的问题?