先把两个大数转换成字符串,且是倒序的,然后逐位数相加
参考链接:
https://blog.csdn.net/allyyhh/article/details/88602088
c++代码:
ll add(ll a,ll b)
{
string x="",y="",z="";//x和y是存放倒序的大数,因为转换过来已经是倒序的就不用reverse了
while(a>0)
{
x+=a%10+'0';
a/=10;
}
while(b>0)
{
y+=b%10+'0';
b/=10;
}
if(x.size()>y.size())//哪个短就在最后用0补齐,也就是补齐高位数部分
{
for(int i=y.size();i<x.size();i++)
{
y+='0';
}
}
else
{
for(int i=x.size();i<y.size();i++)
{
x+='0';
}
}
int p=0;
for(int i=0;i<x.size();i++)
{
p+=x[i]-'0'+y[i]-'0';//p代表当前这一位的加和,如果大于10就把十位存到z数组(这里用的字符串拼接)个位留下与下一位相加
//cout<<p;
if(p>9)
{
z+=p%10+'0';
p/=10;
}
else
{
z+=p+'0';
p=0;
}
}
if(p)z+=p+'0';
ll m=0,k=1;
for(int i=0;i<z.size();i++)//z是result数组
{
//cout<<z[i];
m+=k*(z[i]-'0');
k*=10;
}
return m;
}