注:本程序适用于100000位以内的加法运算,效率很高,在内存和时间允许的情况下可完成10^8位的加法运算
下面用实例来模拟一下我的方法:
输入:a=1234567890123456789 b=9876543210987654321
a : 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1
b : 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
10 10 10 10 10 10 10 10 10 0 10 10 10 10 10 10 10 10 10
0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
输出:11111111101111111110
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[100050],b[100050];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cin>>a>>b;
strrev(a);
strrev(b);
for(int i=0; i<strlen(a); i++)
{
if(b[i])
b[i]+=a[i]-'0';
else
b[i]+=a[i];
}
for(int i=0; i<strlen(b); i++)
if(b[i]>'9')
{
if(b[i+1])
b[i+1]++;
else
b[i+1]+='1';
b[i]-=10;
}
strrev(b);
cout<<b<<endl;
return 0;
}