描述
求两个不超过200位的非负整数的和。
输入描述
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出描述
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
用例输入 1
22222222222222222222 33333333333333333333
用例输出 1
55555555555555555555
c++:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a="";
string b="";
string h1,h2;
cin>>h1;
cin>>h2;
int m=0;
for (int i=0;i<h1.size();i++)
{
if (h1[i]!='0') m=1;
if (m==1) a+=h1[i];
}
m=0;
for (int i=0;i<h2.size();i++)
{
if (h2[i]!='0') m=1;
if (m==1) b+=h2[i];
}
if (b.size()>a.size()) swap(a,b);
string s="";
int n1=0;
int n2=0;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int jin=0;
int n=0;
for (int i=0;i<a.size();i++)
{
n1=a[i]-'0';
if (i<b.size()) n2=b[i]-'0';
else (n2=0);
n=n1+n2+jin;
jin=n/10;
s+=char(n%10+'0');
}
if (jin==1) s+=jin+'0';
reverse(s.begin(),s.end());
cout<<s;
}