Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Cộng các phần tử của hai mảng với ràng buộc


Để cộng hai mảng a[] và b[] vào mảng c[] với ràng buộc: tổng mỗi cặp phần tử phải là một chữ số. Nếu tổng có hơn 1 chữ số, tách thành các chữ số đơn lẻ. Ví dụ tổng 27 thì lưu thành 2, 7.

Input: a[] = {1, 2, 3, 7, 9, 6}       b[] = {34, 11, 4, 7, 8, 7, 6, 99}
Output: 3 5 1 3 7 1 4 1 7 1 3 6 9 9

Giải thích

Duyệt từ chỉ số 0 của cả hai mảng. Mỗi vòng lặp lấy phần tử tiếp theo của cả hai, cộng lại. Nếu tổng > 9, tách các chữ số đưa vào mảng kết quả, ngược lại đưa chính tổng đó. Cuối cùng đưa các phần tử còn lại của mảng lớn hơn vào kết quả.

Ví dụ

#include <iostream>
#include<bits/stdc++.h>
using namespace std;

void split(int n, vector<int> &c) {
    vector<int> temp;
    while (n) {
        temp.push_back(n%10);
        n = n/10;
    }
    c.insert(c.end(), temp.rbegin(), temp.rend());
}

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 {
            split(sum, out);
        }
        i++;
    }
    while (i < m) {
        split(a[i++], out);
    }
    while (i < n) {
        split(b[i++], out);
    }
    for (int x : out)
        cout << x << " ";
}

int main() {
    int a[] = {1, 2, 3, 7, 9, 6};
    int b[] = {34, 11, 4, 7, 8, 7, 6, 99};
    int m =6;
    int n = 8;
    addArrays(a, b, m, n);
    return 0;
}