比赛中常常会遇到大整数和高精度的问题,今天先写一个大整数的加法运算模板(只支持两个非负正整数相加)放在这里,后面会不断更新。

#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;
}