【题目描述】
求两个不超过200位的非负整数的和。
【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【输入样例】
22222222222222222222
33333333333333333333
【输出样例】
55555555555555555555
纯粹的高精度加法
代码如下
#include<bits/stdc++.h>
using namespace std;
//高精度加法模版
int a[200],b[200],c[210];
int main(){
string s1,s2;
cin>>s1>>s2;
int k=0;
for(int i=s1.size()-1;i>=0;i--) a[k++]=s1[i]-'0';
k=0;
for(int i=s2.size()-1;i>=0;i--) b[k++]=s2[i]-'0';
int len=max(s1.size(),s2.size());
for(int i=0;i<len;i++) c[i]=a[i]+b[i];
for(int i=0;i<200;i++)
{
if(c[i]>=10)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
int flag=0;
for(int i=200;i>0;i--)
{
if(c[i]!=0) flag=1;
if(flag) cout<<c[i];
}
cout<<c[0];
return 0;
}
此代码仅供参考,请勿纯抄