题目描述:
给你两个十进制数,数位最多有1000位,求他们的和
输入格式:
第一行输入一个整数
第二行输入一个整数
输出格式:
输出一个整数
样例输入:
12312312312142343254354354
4124354364565765456
样例输出:
12312316436496707820119810
约定:
A,B都是正数
解析:
高精度,顾名思义,它是有超高位数的。
而题目描述中,明确说明了最多有1000位,用int(9位)或long long(19位)都不行。
所以要用string。
string a,b,c;
cin>>a>>b;
而且需要计算字符串长度,并且反序存入一个int数组中。
int aa[1005],bb[1005],cc[1005];
int len1=a.size();
int len2=b.size();
int len=max(len1,len2)+1;
for(int i=0;i<len1;i++)
{
aa[i]=a[len1-1-i]-'0';
}
for(int i=0;i<len2;i++)
{
bb[i]=b[len2-1-i]-'0';
}
各位相加并统一进位(也可以一边加一边进位)。
for(int i=0;i<len;i++)
{
cc[i]=aa[i]+bb[i];
}
for(int i=0;i<len;i++)
{
cc[i+1]+=cc[i]/10;
cc[i]%=10;
}
最后去零输出。
int l=0;
for(int i=len-1;i>=0;i--)
{
if(l==0 && cc[i]==0)continue;
l+=1;
cout<<cc[i];
}