Cộng 2 mảng phần tử theo chỉ số, ràng buộc:
- Cộng từ chỉ số 0
- Nếu tổng ≥ 10, tách từng chữ số
- Phần tử dư của mảng dài hơn thêm vào kết quả (cũng tách nếu ≥10)
Ví dụ
arr1 = {9323, 8, 6, 55, 25, 6}
arr2 = {38, 11, 4, 7, 8, 7, 6, 99}
Kết quả: 9 3 6 1 1 9 1 0 6 2 3 3 1 3 6 9 9
Chương trình
#include <iostream>
#include <vector>
using namespace std;
void splitDigits(int num, vector<int> &out) {
vector<int> tmp;
while (num) { tmp.insert(tmp.begin(), num % 10); num /= 10; }
out.insert(out.end(), tmp.begin(), tmp.end());
}
void addArrays(int a[], int b[], int m, int n) {
vector<int> out;
int i = 0;
while (i < m && i < n) {
int sum = a[i] + b[i];
if (sum < 10) out.push_back(sum);
else splitDigits(sum, out);
i++;
}
while (i < m) splitDigits(a[i++], out);
while (i < n) splitDigits(b[i++], out);
for (int x : out) cout << x << " ";
}
int main() {
int a[] = {9323, 8, 6, 55, 25, 6};
int b[] = {38, 11, 4, 7, 8, 7, 6, 99};
addArrays(a, b, 6, 8);
return 0;
}
Kết quả
9 3 6 1 1 9 1 0 6 2 3 3 1 3 6 9 9