1151: 大整数加法(正数)

1151: 大整数加法

时间限制: 1 Sec  内存限制: 128 MB
提交: 1808  解决: 762
[提交][状态][讨论版][命题人:admin]

题目描述

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

输入

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

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

输出

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

样例输入

2
1 2
112233445566778899 998877665544332211

样例输出

3
1111111111111111110
#include<iostream>
#include<cstring>

using namespace std ; 


#define maxn 1100 
int T ; 
int num1[maxn] , num2[maxn] ; 
char str1[maxn] , str2[maxn] ; 
int result[maxn] , total ; 

int main(){

    cin>>T ; 
    while(T--){
        total = 0 ; 
        cin>>str1>>str2;
        memset(num1 , 0 , sizeof(num1)) ; 
        memset(num2 , 0 , sizeof(num2)) ; 

        int len = strlen(str1) ; 
        
        total = len ;  
        for(int i=0 ; i<len ; i++){
            num1[i] = str1[len-i-1] - '0'; 


        }
        len = strlen(str2) ;

        total = max(total , len) ;  

        for(int i=0 ; i<len ; i++){
            num2[i] = str2[len-i-1] - '0' ; 
            
        }

        //total = max(strlen(str1) , strlen(str2)) ; 
        int cnt = 0 ;
        for(int i=0 ; i<= total ; i++){
            result[i] = (num1[i] + num2[i] + cnt)%10;
            cnt = (num1[i]+num2[i]+cnt)/10 ;  
            
        }
        
        for(int i=total ; i>=0;  i--){
            if(result[i] == 0 && i == total)
                continue ; 
            cout<<result[i] ; 
        }
        cout<<endl ; 
    }

    return 0 ; 
}
原文地址:https://www.cnblogs.com/yi-ye-zhi-qiu/p/8902252.html