题目
输入格式
分两行输入。a,b<=10^500
输出格式
输出只有一行,代表a+b的值
例子:
输入:
1
1
输出:
2
思路:
两个数最大为10^500,就是字符数组为510(不设500是因为有时候会有溢出的情况)
剩下的步骤就是正常大数加法的步骤,两个数a,b当成字符数组写入,然后倒转字符数组,存入到int数组里,进行相加。
上代码:
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
void reversed(char s[],int num[])
{
for(int i = strlen(s)-1,j=0; i>=0; i--,j++)
num[j] = s[i] - '0';
}
int main()
{
char a[501],b[501];
memset(a,'0',sizeof(a));
memset(b,'0',sizeof(b));
cin>>a>>b;
int a1[502],b1[502];
memset(a1,0,sizeof(a1));
memset(b1,0,sizeof(b1));
reversed(a,a1);
reversed(b,b1);
int carry = 0,i;
int add[502];
for(i=0;i<max(strlen(a),strlen(b));i++)
{
int num = a1[i] + b1[i] + carry;
add[i] = num%10;
carry = num/10;
}
if(carry!=0)
add[i] = carry;
else i--;
while(i>=0)
cout<<add[i--];
return 0;
}