P1601 A+B Problem(高精)——高精度加法
题目描述
高精度加法,相当于 a+b problem,不用考虑负数。
输入格式
分两行输入。\(a,b \leq 10^{500}\)。
输出格式
输出只有一行,代表 \(a+b\) 的值。
样例 #1
样例输入 #1
1
1
样例输出 #1
2
样例 #2
样例输入 #2
1001
9099
样例输出 #2
10100
提示
\(20\%\) 的测试数据,\(0\le a,b \le10^9\);
\(40\%\) 的测试数据,\(0\le a,b \le10^{18}\)。
我的作答
#include <stdio.h>
#include <string.h>
int main() {
char aa[520];
char bb[520];
int a[520]={0};
int b[520]={0};
int c[520]={0};
scanf("%s",aa);
scanf("%s",bb);
for (int i=0;i<strlen(aa);i++) {
a[i]=aa[strlen(aa)-i-1]-'0';
}
for (int i=0;i<strlen(bb);i++) {
b[i]=bb[strlen(bb)-i-1]-'0';
}
int length=strlen(aa)>strlen(bb)?strlen(aa):strlen(bb);
int carry=0;
for (int i=0;i<strlen(aa)||i<strlen(bb);i++) {
int temp = a[i]+b[i] + carry;
c[i] = temp%10;
if (temp>=10) carry=1;
else carry=0;
}
if (carry) {
c[length] = carry;
length++;
}
for (int i=length-1;i>=0;i--) {
printf("%d",c[i]);
}
}