题目描述:
实现一个加法器,使其能够输出a+b的值。
输入:
输入包括两个数a和b,其中a和b的位数不超过1000位。
输出:
可能有多组测试数据,对于每组数据, 输出a+b的值。
样例输入:
6 8
2000000000 30000000000000000000
样例输出:
14
30000000002000000000
实现代码:
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <algorithm>
#include <math.h>
using namespace std
;
struct bign
{
int d
[1010];
int len
;
bign(){
memset(d
,0,sizeof(d
));
len
=0;
}
};
bign
change(char str
[]){
bign a
;
a
.len
=strlen(str
);
for(int i
=0;i
<a
.len
;i
++){
a
.d
[i
]=str
[a
.len
-1-i
]-'0';
}
return a
;
}
bign
add(bign a
,bign b
){
bign c
;
int carry
=0;
int temp
;
for(int i
=0;i
<a
.len
||i
<b
.len
;i
++){
temp
=a
.d
[i
]+b
.d
[i
]+carry
;
c
.d
[c
.len
++]=temp
%10;
carry
=temp
/10;
}
if(carry
!=0){
c
.d
[c
.len
++]=carry
;
}
return c
;
}
void print(bign a
){
for(int i
=a
.len
-1;i
>=0;i
--){
printf("%d",a
.d
[i
]);
}
}
int main(){
char str1
[1010],str2
[1010];
while(scanf("%s %s",str1
,str2
)!=EOF){
bign a
=change(str1
);
bign b
=change(str2
);
print(add(a
,b
));
printf("\n");
}
return 0;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-55028.html