首先因为我自己的马虎,总是错,新手总是以各种原因错,可能是马虎i打成了j,或者少加了=,少考虑的情况,总之路漫漫其修远兮,都没刷够1000道题,算什么热爱。
int是三十二位,大数相加很容易溢出,所以要用char,int总是限制在一定数内,long long int 也如此,但char字符串明显可以存更多的数。
用char存储大数后,将各个位存在int数组里面,各个数相加,k为进位运算,最后因为字符串存入数组时下标是 0,1,2,3,4,,,,但是我们正常大数输出顺序为n,n-1,,,4,3,2,1,0,所以要倒着输出。
模板代码:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int q[10000],w[10000];
char s1[10000],s2[10000];
cin>>s1>>s2;
int a=strlen(s1);
int b=strlen(s2);
int i=0,j=0,smax;
while(a-1-i>=0)
{
q[i]=s1[a-1-i]-'0';
i++;
}
while(b-1-j>=0)
{
w[j]=s2[b-1-j]-'0';
j++;
}
if(a>=b)smax=a;
else smax=b;
int add[smax]={0};
int k=0;
for(int i=0;i<smax;i++)
{
add[i]=(q[i]+w[i]+k)%10;
k=(q[i]+w[i]+k)/10;
}
if(k>0)
{
smax=1;
cout<<smax;
}
for(int i=smax-1;i>=0;i--)
{
cout<<add[i];
}
cout<<endl;
}