问题遇到的现象和发生背景
10:大整数加法
总时间限制: 1000ms 内存限制: 65536kB
描述
求两个不超过200位的非负整数的和。
输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
22222222222222222222
33333333333333333333
样例输出
55555555555555555555
来源
程序设计实习2007
问题相关代码,请勿粘贴截图
#include<bits/stdc++.h>
using namespace std;
int main()
{
string az,bz;
cin>>az>>bz;
int a[(int)strlen(az)],b[(int)strlen(bz)];
for(int i=0;i<strlen(az);i++)
{
a[i]=az[i]-'0';
}
for(int i=0;i<strlen(bz);i++)
{
b[i]=bz[i]-'0';
}
g=strlen(az)>=strlen(bz)?strlen(az):strlen(bz)
int h[g+1]={0};
for(int i=0;i<=g;i++)
{
if(a[i]+b[i]>=10)
{
h[i+1]+=1;
h[i]+=(a[i]+b[i])%10;
}
else
{
h[i]=a[i]+b[i];
}
}
bool l=false;
for(int i=200;i>=0;i--)
{
if(h[i]!=0)
l=true;
if(l==true)
cout<<h[i];
}
return 0;
}
运行结果及报错内容
[Error] cannot convert 'std::string' {aka 'std::__cxx11::basic_string'} to 'const char*'