比赛中常常会遇到大整数和高精度的问题,今天先写一个大整数的加法运算模板(只支持两个非负正整数相加)放在这里,后面会不断更新。
#include<iostream>
using namespace std;
const int L = 11000;
//只限两个非负整数相加
string add(string a,string b)
{
string ans;
int na[L] = {0}, nb[L] = {0};
int la = a.size(), lb = b.size();
for(int i = 0; i < la; i++)
na[la-1-i] = a[i] - '0';
for(int i = 0; i < lb; i++)
nb[lb-1-i] = b[i] - '0';
int lmax = la > lb ? la : lb;
for(int i = 0; i < lmax; i++)
na[i] += nb[i], na[i+1] += na[i] / 10, na[i] %= 10;
if(na[lmax])
lmax++;
for(int i = lmax - 1; i >= 0; i--)
ans += na[i] + '0';
return ans;
}
int main()
{
string a,b;
while(cin >> a >> b)
cout<<add(a,b)<<endl;
return 0;
}