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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP