题目描述
实现一个加法器,使其能够输出a+b的值。
输入描述:
输入包括两个数a和b,其中a和b的位数不超过1000位。
输出描述:
可能有多组测试数据,对于每组数据,
输出a+b的值。
示例1
输入
2 6
10000000000000000000 10000000000000000000000000000000
输出
8
10000000000010000000000000000000
思路:
用string保存输入的两个数,逆序保存在两个int数组中,再从0开始相加进位,逆序输出即可
#include <bits/stdc++.h>
using namespace std;
int main()
{
int x[1005],y[1005],z[1005];
string a,b;
while(cin>>a>>b){
//cout<<a[0]<<endl;
//cout<<a[1]<<endl;
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
memset(z,0,sizeof(z));
int malength=a.length();
if(malength<b.length())
malength = b.length();
int j = 0;
for(int i = a.length() - 1 ; i >= 0 ; i --, j++)
x[j]= a[i]-48;
j = 0;
for(int i = b.length() - 1 ; i >= 0 ; i --, j++ )
y[j]= b[i]-48;
for(int i = 0 ; i < malength ;i ++)
{
z[i+1]=(x[i] + y[i] + z[i]) /10;
z[i] = (x[i] + y[i] + z[i] ) %10;
}
int i;
for( i = malength ; i >= 0 ; i-- )
if( z[i] != 0 )
break;
for(; i >= 0 ; i -- )
cout<<z[i];
cout<<endl;
//cout<<a<<b;
}
return 0;
}