题目描述
高精度加法,相当于 a+b problem,不用考虑负数。
输入格式
分两行输入。a,b \leq 10^{500}a,b≤10500。
输出格式
输出只有一行,代表 a+ba+b 的值。
输入输出样例
输入 #1复制
1 1
输出 #1复制
2
输入 #2复制
1001 9099
输出 #2复制
10100
#include<stdio.h>
#include<string.h>
char a[520],b[520];
int a1[520],b1[520],c[520];
int main(void){
scanf("%s %s",&a,&b);//输入时数组的第一位是数字的最大位
int alen=strlen(a);
int blen=strlen(b);
for(int i=0;i<alen;i++){
a1[alen-1-i]=a[i]-48;//-48:将字符型数字转换为数字型
}
for(int i=0;i<blen;i++){
b1[blen-1-i]=b[i]-48;//数字型数组第一位是数字的个位,方便后面的进位
}
int k= alen>blen? alen:blen;
k+=1;//可能再进一位
for(int i=0;i<k;i++){
c[i]+=a1[i]+b1[i];//相加后数组c第一位是数字的个位
c[i+1]=c[i]/10;//进位
c[i]=c[i]%10;
}
if(c[k-1]==0&&k>1) k--;//和上面k+=1对应,如果没进位,把这一位删除
for(int i=k-1;i>=0;i--){
printf("%d",c[i]);
}
}