fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int MAX_SIZE = 1000;
  5. const int TEN = 10;
  6. /*
  7. void add(int a[], int b[], int rezultat[]) {
  8. for (int i = 1; i <= a[0] || i <= b[0]; ++i) {
  9. int sum = rezultat[i] + a[i] + b[i];
  10. rezultat[i] = sum % TEN;
  11. rezultat[i + 1] = sum / TEN;
  12. rezultat[0] = i;
  13. if (sum >= TEN) {
  14. rezultat[0] = i + 1;
  15. }
  16. }
  17. }
  18. */
  19.  
  20. const int MAX_LENGTH = 1000;
  21.  
  22. void add(int a[], int b[], int sum[]) {
  23. int aRev[MAX_LENGTH + 1], bRev[MAX_LENGTH + 1];
  24. for (int i = 1; i <= a[0]; ++i) {
  25. aRev[i] = a[a[0] - i + 1];
  26. }
  27. aRev[0] = a[0];
  28. for (int i = 1; i <= b[0]; ++i) {
  29. bRev[i] = b[b[0] - i + 1];
  30. }
  31. bRev[0] = b[0];
  32. int maxLength;
  33. if (aRev[0] > bRev[0]) {
  34. maxLength = aRev[0];
  35. } else {
  36. maxLength = bRev[0];
  37. }
  38. int carry = 0;
  39. int sumLength = 0;
  40. for (int i = 1; i <= maxLength; ++i) {
  41. if (aRev[1] != 0 || bRev[1] != 0) {
  42. int currentSum = aRev[i] + bRev[i] + carry % 10;
  43. sum[++sumLength] = currentSum % 10;
  44. carry = currentSum / 10;
  45. }
  46. }
  47. if (carry > 0) {
  48. sum[++sumLength] = carry;
  49. }
  50. sum[0] = sumLength;
  51. for (int i = 0; i <= sumLength; ++i) {
  52. cout << sum[i] << " ";
  53. }
  54. }
  55. int main() {
  56. int a[MAX_SIZE + 1], b[MAX_SIZE + 1], rezultat[MAX_SIZE + 1] = {0};
  57. cin >> a[0];
  58. for (int i = 1; i <= a[0]; ++i) {
  59. cin >> a[i];
  60. }
  61. cin >> b[0];
  62. for (int i = 1; i <= b[0]; ++i) {
  63. cin >> b[i];
  64. }
  65. add(a, b, rezultat);
  66. for (int i = 0; i <= rezultat[0]; ++i) {
  67. cout << rezultat[i] << " ";
  68. }
  69. return 0;
  70. }
  71.  
Success #stdin #stdout 0.01s 5276KB
stdin
6 8 6 1 7 4 7
5 6 5 8 3 7

6 7 4 7 1 6 8
5 7 3 8 5 6

stdout
6 4 8 5 7 2 9 6 4 8 5 7 2 9