题目描述
比利经常会碰到超大整数的加法运算,而普通的计算器上无法进行。因此他想你帮他写一个程序来计算结果。
输入
输入数据有多组。首先输入一个整数T,表示有T组输入。
每组输入两个大整数,并用空格隔开。每个整数最多1000位。没有负数输入。
输出
对于每组输入,输出两个整数的和,单独占一行。
样例输入
2 1 2 112233445566778899 998877665544332211样例输出
3 1111111111111111110
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
char s1[1010], s2[1010];
int a1[1010], a2[1010];
int t;cin>>t;
while (t--)
{
memset(s1, 0, sizeof(s1));
memset(s1, 0, sizeof(s2));
memset(a1, 0, sizeof(a1));
memset(a2, 0, sizeof(a2));
scanf("%s %s", s1,s2);
int len1, len2;
len1 = strlen(s1);
len2 = strlen(s2);
int maxl = max(len1,len2);
for (int j=0,i = len1 - 1; i >= 0; i--)a1[j++] = s1[i] - '0';
for (int j=0,i = len2 - 1; i >= 0; i--)
a2[j++] = s2[i] - '0';
for (int i = 0; i<maxl; i++)
{
a2[i] += a1[i];
if (a2[i] >= 10)
{
a2[i] -= 10;
a2[i + 1] += 1;
}
}
if (a2[maxl])cout<<a2[maxl];
for (int i = maxl - 1; i >= 0; i--)cout<<a2[i];
cout<<"\n";
}
return 0;
}