原题题目来自洛谷
题目信息
A+B Problem(高精)
题目描述
高精度加法,相当于a+b problem,不用考虑负数.
输入格式
分两行输入。 a , b ≤ 1 0 500 a,b \leq 10^{500} a,b≤10500
输出格式
输出只有一行,代表 a + b a+b a+b的值
样例 #1
样例输入 #1
1
1
样例输出 #1
2
样例 #2
样例输入 #2
1001
9099
样例输出 #2
10100
高精加算法核心
代码
// 高精度加法,相当于a+b problem,不用考虑负数.
#include<bits/stdc++.h>
using namespace std;
char a[501],b[501];
int c[501],d[501];
int ans[501];
void sub(char a[],char b[]){
int i,j,k;
int len1,len2;
len1=strlen(a);
len2=strlen(b);
int len=max(len1,len2);
for(i=len1-1,k=0;i>=0;i--,k++){
c[k]=a[i]-'0';
}
for(i=len2-1,k=0;i>=0;i--,k++){
d[k]=b[i]-'0';
}
for(i=0;i<len;i++){
if(ans[i]+c[i]+d[i]>=10){
ans[i]=ans[i]+c[i]+d[i]-10;
ans[i+1]+=1;
}
else{
ans[i]=ans[i]+d[i]+c[i];
}
}
if(ans[len]>0){
cout<<ans[len];
}
for(i=len-1;i>=0;i--){
cout<<ans[i];
}
}
int main(){
scanf("%s",a);
scanf("%s",b);
sub(a,b);
}