题目描述
比利经常会碰到超大整数的加法运算,而普通的计算器上无法进行。因此他想你帮他写一个程序来计算结果。
输入
输入数据有多组。首先输入一个整数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;
}