题目描述
高精度加法,相当于 a+b problem,不用考虑负数。
输入格式
分两行输入。a,b≤10的500次方。
输出格式
输出只有一行,代表 a+b 的值。
嘶烤
先用输入字符串再转到列表里,一位一位的加上,由于两个一位数相加最大只能加出18,所以可以直接减10,如果是类似99+1这样的会进一位,so要加一个特判是否有进位最后输出吧
禔碣
#include <bits/stdc++.h>
using namespace std;
string a,b;
int s[505]={0},la,lb,m;
int main(){
for(int i=0;i<=505;i++)
s[i]=0;
cin>>a>>b;
la=a.size();
lb=b.size();
m=max(la,lb);
if(la>lb){
for(int i=1;i<=la;i++)
s[i]=a[la-i]-48;
for(int i=1;i<=lb;i++)
s[i]+=b[lb-i]-48;
}
else{
for(int i=1;i<=lb;i++)
s[i]=b[lb-i]-48;
for(int i=1;i<=la;i++)
s[i]+=a[la-i]-48;
}
for(int i=1;i<=m;i++){
if(s[i]>=10){
s[i]-=10;
s[i+1]++;
}
}
if(s[m+1]>0) m++;
for(int i=m;i>=1;i--)
cout<<s[i];
return 0;
}