两个大数字相加

参照HPUOJ1163题:

题目描述

给定两个整数AB,让你求出A+B的值。

输入

第一行输入一个整数T,代表有T组测试数据。

每组数据占两行,第一行输入一个整数A,第二行输入一个整数B

注:1<=T<=30,1<=A,B<=10666666

输出

对每组数据,输出A+B的最后结果。 

样例输入

1
233333333333333333333333333333333333333
666666666666666666666666666666666666666

样例输出

899999999999999999999999999999999999999

代码:

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. char a[1000000];
  5. char b[1000000];
  6. int c[1000000],d[1000000],e[1000000];
  7. int main()
  8. {
  9. int i,k,j,q,w,r;
  10. cin>>r;
  11. while(r--)
  12. {
  13. memset(c,0,sizeof(c));
  14. memset(d,0,sizeof(d));
  15. memset(e,0,sizeof(e));
  16. cin>>a>>b;
  17. j=0;
  18. q=strlen(a);
  19. w=strlen(b);
  20. k=q>w?q:w;
  21. for(i=q-1;i>=0;i--)
  22. {
  23. c[j]=a[i]-'0';
  24. j++;
  25. }
  26. j=0;
  27. for(i=w-1;i>=0;i--)
  28. {
  29. d[j]=b[i]-'0';
  30. j++;
  31. }
  32. for(i=0;i<k;i++)
  33. e[i]=c[i]+d[i];
  34. for(i=0;i<k;i++)
  35. {
  36. if(e[i]>9)
  37. {
  38. e[i]-=10;
  39. e[i+1]++;
  40. }
  41. }
  42. for(i=k;i>=0;i--)
  43. {
  44. if(i==k && e[k]==0) continue;
  45. cout<<e[i];
  46. }
  47. cout<<endl;
  48. }
  49. return 0;
  50. }

猜你喜欢

转载自blog.csdn.net/KK_2018/article/details/79967487