[解题思路]
解题思路和高精度的减法类似,需要注意的是动态申请内存的时候,取最大的长度再加一,因为相加结果可能会进一。
[代码实现]
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a,b;
cin>>a>>b;
int a_size=a.size();
int b_size=b.size();
int size=a_size>b_size?a_size:b_size;
size+=1; /*相加结果可能会进1*/
int *ia=new int[size];
int *ib=new int[size];
/* 初始化 */
for (int i=0;i<size;i++)
ia[i]=ib[i]=0;
/* 逆序存储 */
for (int i=0;i<a_size;i++) ia[a_size-i-1]=a[i]-'0';
for (int i=0;i<b_size;i++) ib[b_size-i-1]=b[i]-'0';
/* 不用保证a>b, 没有正负的情况 */
for(int i=0;i<size;i++)
{
ia[i]=ia[i]+ib[i];
}
for(int i=0;i<size;i++)
{
if(ia[i]>9)
{
ia[i+1]+=1;
ia[i]-=10;
}
}
int book=0;
for(book=size-1;book>=0;book--)
{
if(ia[book]!=0) break;
}
for(int i=book;i>=0;i--)
{
cout<<ia[i];
}
return 0;
}