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 sum[]) {
  8. sum[0] = 0; // Inițializăm numărul de cifre din sum
  9. int carry = 0; // Inițializăm transportul
  10. int i = 1; // Începem de la prima cifră
  11.  
  12. // Continuăm până când am procesat toate cifrele din a și b
  13. while (i <= a[0] || i <= b[0] || carry) {
  14. int digitA = (i <= a[0]) ? a[i] : 0; // Obținem cifra din a (sau 0)
  15. int digitB = (i <= b[0]) ? b[i] : 0; // Obținem cifra din b (sau 0)
  16.  
  17. int sumDigit = digitA + digitB + carry; // Cifra sumată
  18. carry = sumDigit / TEN; // Calculăm transportul
  19. sum[++sum[0]] = sumDigit % TEN; // Salvăm cifra în sum
  20.  
  21. ++i; // Trecem la următoarea cifră
  22. }
  23. }
  24.  
  25. int main() {
  26. int a[MAX_SIZE + 1], b[MAX_SIZE + 1], sum[MAX_SIZE + 1] = {0};
  27.  
  28. // Citim primul număr
  29. cin >> a[0];
  30. for (int i = 1; i <= a[0]; ++i) {
  31. cin >> a[i];
  32. }
  33.  
  34. // Citim al doilea număr
  35. cin >> b[0];
  36. for (int j = 1; j <= b[0]; ++j) {
  37. cin >> b[j];
  38. }
  39.  
  40. // Apelăm funcția add
  41. add(a, b, sum);
  42.  
  43. // Afișăm rezultatul
  44. for (int i = 1; i <= sum[0]; ++i) { // Afișăm de la cea mai semnificativă cifră
  45. cout << sum[i] << " ";
  46. }
  47. cout << endl;
  48.  
  49. return 0;
  50. }
  51.  
Success #stdin #stdout 0.01s 5280KB
stdin
5 1 2 2 5 8
6 2 2 2 6 7 8
stdout
3 4 4 1 6 9