大整数加法(c++)

题目描述

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

输入

输入数据有多组。首先输入一个整数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;
}

猜你喜欢

转载自blog.csdn.net/weixin_52797843/article/details/122419617