Hello I am HERE!

题目描述
There are many difficulties in today's contest, but this is definitely not one of them.
Because I want you to do it, the classic A+B.

输入描述:
First line an Integer N means n test cases.
Next 2N lines representing 2N groups of different Integers.
N<50.
THE LENGTH of every Integer will less than 5000.
All Integers will be greater than 0.
Some cases may have leading zero.
输出描述:
One line for each test cases reprecenting the answer of A+B.
Do not putout leading zero
示例1

输入
1
100000000000000
100000000000000

输出
200000000000000

备注:
You do not have to use FFT.

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

问题分析: 在高精度加法模板题的基础上增加了前导零的处理,其中一种处理前导零的方法是先记录前导零个数,再遍历无前导零部分即可,具体代码如下。

#include <iostream>
#include <vector>

using namespace std;

vector<int> add(vector<int> &A, vector<int> &B)   // 高精度加法处理
{
    if(A.size() < B.size()) return add(B, A);

    vector<int> C;
    int t = 0;

    for(int i = 0; i < A.size(); i ++){
        t += A[i];
        if(i < B.size()) t += B[i];
        C.push_back(t % 10);
        t /= 10;
    }

    if(t) C.push_back(t);

    return C;
}

int main()
{
    int n;
    cin >> n;
    while(n --){
        string a, b;
        vector<int> A, B;
        cin >> a >> b;

        int cnt1 = 0, cnt2 = 0;
        for(int i = 0; i <= a.size() - 1; ){   // 记录a中的前导零个数
            while(a[i] == '0') i ++, cnt1 ++;
            break;
        }

        for(int i = 0; i <= b.size() - 1; ){   // 记录b中的前导零个数
            while(b[i] == '0') i ++, cnt2 ++;
            break;
        }

        for(int i = a.size() - 1; i >= cnt1; i --) A.push_back(a[i] - '0');
        for(int i = b.size() - 1; i >= cnt2; i --) B.push_back(b[i] - '0');

        auto C = add(A, B);

        for(int i = C.size() - 1; i >= 0; i --) cout << C[i];
        cout << endl;
    }

    return 0;
}