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 ; }