Xóa tất cả các phần tử chia hết cho k trong mảng a có n phần tử

16
Lập trình C++

Bài toán. Xóa tất cả các phần tử chia hết cho k trong mảng a có n phần tử. Đưa ra số phần tử còn lại và mảng a sau khi xóa. Ví dụ:

MODARR.INP

MODARR.OUT

6 2

3 6 5 4 7 2

3

3 5 7

Code tham khảo:

#include <iostream>
using namespace std;

void DelK(int a[],int &n, int k) {
    for (int i = k+1; i < n; i++) {
        a[i-1] = a[i];
    }
    n--;
}
void DelArr(int a[], int &n, int k) {
    for (int i = 0; i < n; i++) {
        if(a[i] % k == 0) {
            DelK(a, n, i);
        }
    }
}
int main() {
    freopen("MODARR.INP","r",stdin);
    freopen("MODARR.OUT","w",stdout);
    int n, k; int a[100];
    cin >> n >> k;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    DelArr(a,n,k);
    cout << n << endl;
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
}