问题描述
求两个不超过200位的非负整数的和。
输入数据
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
输出要求
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能
输出为0342。
输入样例
22222222222222222222
33333333333333333333
输出样例
Output Sample:
55555555555555555555
# include<stdio.h>
# include<string.h>
int Max(int a, int b){
return (a > b ? a : b);
}
int main(){
char a[201]={'\0'},b[201]={'\0'}, c[202]={'\0'}, carry_bit = '0';
int n, aLen, bLen, cStart = 200;
scanf("%s%s", a, b);
aLen = strlen(a);
bLen = strlen(b);
n = Max(aLen, bLen);
while(aLen > 0 || bLen > 0){
if(aLen <= 0)
a[aLen-1] = '0';
if(bLen <= 0)
b[bLen-1] = '0';
c[cStart] = a[aLen-1] + b[bLen-1]-'0' + carry_bit - '0';
if(c[cStart] > '9'){
carry_bit = '1';
c[cStart] = c[cStart] -10;
}
else
carry_bit = '0';
cStart--; aLen--; bLen--;
}
if(carry_bit != '0')
c[cStart] = '1';
else
cStart++;
while(c[cStart] != '\0'){
printf("%c", c[cStart]);
cStart++;
}
return 0;
}