Computer >> Máy Tính >  >> Lập trình >> C ++

Số cặp có tổng là lũy thừa của 2 trong C ++

Cho một mảng, chúng ta phải tìm số cặp có tổng là lũy thừa của 2. Hãy xem ví dụ.

Đầu vào

arr = [1, 2, 3]

Đầu ra

1

Chỉ có một cặp có tổng là lũy thừa của 2. Và cặp đó là (1, 3).

Thuật toán

  • Khởi tạo mảng với các số ngẫu nhiên.
  • Khởi tạo số đếm bằng 0.
  • Viết hai vòng lặp để nhận tất cả các cặp của mảng.
    • Tính tổng của mọi cặp.
    • Kiểm tra xem tổng có phải là lũy thừa của 2 hay không bằng cách sử dụng bitwise AND.
    • Tăng số lượng nếu số đếm là lũy thừa của 2.
  • Trả lại số lượng.

Thực hiện

Sau đây là cách thực hiện thuật toán trên trong C ++

#include <bits/stdc++.h>
using namespace std;
int get2PowersCount(int arr[], int n) {
   int count = 0;
   for (int i = 0; i < n; i++) {
      for (int j = i + 1; j < n; j++) {
         int sum = arr[i] + arr[j];
         if ((sum & (sum - 1)) == 0) {
            count++;
         }
      }
   }
   return count;
}
int main() {
   int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
   int n = 10;
   cout << get2PowersCount(arr, n) << endl;
   return 0;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

6