下面是AC的代码
#include<iostream>
using namespace std;
int a[505],b[505],c[505];
int init(int x[])
{
string baseData;
cin>>baseData;
int l = baseData.size();
for(int i=0;i<l;i++)
{
x[i] = baseData[l-i-1]-'0';
}
return l;
}
int main()
{
int la = init(a);
int lb = init(b);
int lc = max(la,lb);
for(int i = 0; i < lc; i++)
{
c[i] += a[i] + b[i];
if(c[i] >= 10)
{
c[i+1]++;
c[i] -= 10;
}
}
if(c[lc] != 0)
{
cout<<c[lc];
}
for(int i = lc - 1;i>=0;i--)
{
cout<<c[i];
}
return 0;
}
很明显这个代码没有处理前导0的情况,但测试集也能过,所以大家在写的时候可能就会忽略去掉前导零。
输入 000 000 输出还是000
所以规范的代码应该是下面这个
#include<iostream>
using namespace std;
int a[505],b[505],c[505];
int init(int x[])
{
string baseData;
cin>>baseData;
int l = baseData.size();
for(int i=0;i<l;i++)
{
x[i] = baseData[l-i-1]-'0';
}
return l;
}
int main()
{
int la = init(a);
int lb = init(b);
int lc = max(la,lb);
for(int i = 0; i < lc; i++)
{
c[i] += a[i] + b[i];
if(c[i] >= 10)
{
c[i+1]++;
c[i] -= 10;
}
}
while(c[lc]==0&&lc>0)
lc--;
for(int i = lc;i>=0;i--)
{
cout<<c[i];
}
return 0;
}
大家注意一下这个问题。