C++中求和为2的幂的数对个数
给定一个数组,我们必须找到和为2的幂的数对的个数。让我们来看一个例子。
输入
arr = [1, 2, 3]
输出
1
只有一对数的和是2的幂。这对数是(1, 3)。
算法
- 用随机数初始化数组。
- 将计数初始化为0。
- 编写两个循环以获取数组的所有对。
- 计算每一对的和。
- 使用按位与运算符检查和是否为2的幂。
- 如果计数是2的幂,则递增计数。
- 返回计数。
实现
以下是上述算法在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; }
输出
如果运行上面的代码,则会得到以下结果。
6
广告