ZZULIOJ:1151: 大整数加法

题目描述

比利经常会碰到超大整数的加法运算,而普通的计算器上无法进行。因此他想你帮他写一个程序来计算结果。

输入

输入数据有多组。首先输入一个整数T,表示有T组输入。

每组输入两个大整数,并用空格隔开。每个整数最多1000位。没有负数输入。

输出

对于每组输入,输出两个整数的和,单独占一行。

样例输入 Copy

2
1 2
112233445566778899 998877665544332211

样例输出 Copy

3
1111111111111111110

源代码 

//此题为标准的高精度加法模板题
//查看ACM算法专栏当中的《高精度问题》文章即可,不再赘述 
#include <iostream>
#include <vector>
using namespace std;
vector<int> add(vector<int> &A,vector<int> &B)
{
    vector<int> C;
    int t = 0;
    for(int i = 0;i < A.size()||i < B.size();i ++ )
    {
        if(i < A.size())t += A[i];
        if(i < B.size())t += B[i];
        C.push_back(t % 10);
        t /= 10;
    }
    if(t)C.push_back(1);
    return C;
}
int main()
{
    int n;
    cin >> n;
    while(n -- )
    {
        string a,b;
        cin >> a >> b;
        vector<int> A,B;
        for(int i = a.size() - 1;i >= 0;i -- )A.push_back(a[i] - '0');
        for(int i = b.size() - 1;i >= 0;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;
}

猜你喜欢

转载自blog.csdn.net/couchpotatoshy/article/details/126077252