Đề bài
Cho một mảng số nguyên, nhiệm vụ là tìm phép AND của tất cả phần tử của mỗi tập con của mảng và in giá trị AND nhỏ nhất trong số đó.
Ví dụ
If arr[] = {1, 2, 3, 4, 5} then (1 & 2) = 0 (1 & 3) = 1 (1 & 4) = 0 (1 & 5) = 1 (2 & 3) = 2 (2 & 4) = 0 (2 & 5) = 0 (3 & 4) = 0 (3 & 5) = 1 (4 & 5) = 4 Thuật toán
- Giá trị AND nhỏ nhất của bất kỳ tập con nào của mảng sẽ là AND của tất cả các phần tử của mảng.
- Vì vậy, cách đơn giản nhất là tìm AND của tất cả các phần tử của mảng con.
Ví dụ mã nguồn
#include <bits/stdc++.h> using namespace std; int getMinAndValue(int *arr, int n) { int result = arr[0]; for (int i = 1; i < n; ++i) { result = result & arr[i]; } return result; } int main() { int arr[] = {1, 2, 3, 4, 5}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Minimum value = " << getMinAndValue(arr, n) << endl; return 0; } Khi biên dịch và chạy chương trình trên. Nó tạo ra đầu ra sau:
Kết quả
Minimum value = 0