//代码AC通过(^ _ ^)(^ ~ ^)
题目描述
求两个不超过200位的非负整数的和。
输入格式
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0 。
输出格式
一行,即相加后的结果0 。结果里不能有多余的前导0,既如果结果是342,那么不能输出为0342。
输入样例
22222222222222222222 33333333333333333333
输出样例
55555555555555555555
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[2000], b[2000], c[2000];
char a1[2000], b1[2000];
int main(){
int x, lena, lenb, lenc;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
gets(a1);
gets(b1);
lena = strlen(a1);
lenb = strlen(b1);
for(int i = 0; i <= lena - 1; ++i){
a[lena - i] = a1[i] - '0';
}
for(int i = 0; i <= lenb - 1; ++i){
b[lenb - i] = b1[i] - '0';
}
lenc = 1;
x = 0;
while(lenc <= lena || lenc <= lenb){
c[lenc] = a[lenc] + b[lenc] + x;
x = c[lenc] / 10;
c[lenc] %= 10;
lenc++;
}
c[lenc] = x;
if(c[lenc] == 0){
lenc--;
}
for(int i = lenc; i >= 1; --i){
cout << c[i];
}
cout << endl;
return 0;
}