---
# System prepended metadata

title: CODE c++

---

# DEADLINE NGÀY 2/12/2024
  Nhập 1 mảng 3 chiều có kích thước MxNxP gồm các giá trị là số nguyên 
 1. In ra tất các phần tử trong mảng theo thứ tự giảm dần và ko có số trùng lặp nhau.
 2. In ra các cặp số khác nhau sao cho chúng chia hết được cho nhau 
 3. In ra các bộ 3 số khác nhau sao cho 1 số này bằng tổng 2 số còn lại  
 Ví dụ: Xem hình minh họa.![image](https://hackmd.io/_uploads/B1QxixP71x.png)

```cpp!
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

int main() {
	const int M = 2;
	const int N = 3;
	const int P = 2;

	int arr[M][N][P] = {
		{
		{3, 2},
		{2, 7},
		{1, 8}
		},
		{
		{2, 9},
		{5, 8},
		{7, 20}
		}
	};

	vector<int> values;

	for (size_t i = 0; i < M; i++)
	{
		for (size_t j = 0; j < N; j++)
		{
			for (size_t k = 0; k < P; k++)
			{
				values.push_back(arr[i][j][k]);
			}
		}
	}

	vector<int> savevalues;

	sort(values.rbegin(), values.rend());

	for (size_t i = 0; i < values.size(); i++)
	{
		if (i == 0 || values[i] != values[i - 1]) {
			savevalues.push_back(values[i]);
			
		}
	}
	cout << "Ket qua 1:  ";
	for (size_t i = 0; i < savevalues.size(); i++)
	{
		cout << savevalues[i] << " ";
	}

	cout << endl;
	cout << "Ket qua 2: " << endl;
	for (size_t i = 0; i < savevalues.size(); i++)
	{
		for (size_t j = i + 1; j < savevalues.size(); j++)
		{
			if (savevalues[i] % savevalues[j] == 0) {
				cout <<	"	" << savevalues[i] << " : " << savevalues[j] << endl;
			}
		}
	}
	
	cout << "Ket qua 3: " << endl;

	for (int i = 0; i < savevalues.size(); i++) {
		for (size_t j = 1; j < savevalues.size(); j++)
		{
			for (size_t k = j + 1; k < savevalues.size(); k++)
			{
				if (savevalues[j] != savevalues[k] && savevalues[j] + savevalues[k] == savevalues[i]) {
					cout << "	" <<  savevalues[i] << " = " << savevalues[j] << " + " << savevalues[k] << endl;
				}
			}
		}
	}


	return 0;
}
```
## CHI TIẾT VỀ CHƯƠNG TRÌNH 
- thư viện ```vector``` khai báo để sử dụng vector 
```vector<int> values;``` tạo một vector ```values``` để lưu giá trị bằng cách sử dụng vòng lặp 3 chiều và lưu giá trị bằng lệnh ```values.push_back(arr[i][j][k]);```
- trong bài làm thì dùng ```sort(values.rbegin, values.rend)``` để sắp xếp các giá trị từ lớn đến bé.
- bây giờ thì trong values đã lưu tất cả các giá trị trong mảng 3 chiều cụ thể 
- nhưng vì có những giá trị lặp nhau nên cần tạo một vector mới để lưu giá trị không lặp nhau ```vector<int> savevalues;```
- lưu những giá trị không lặp nhau bằng vòng lặp mới .



