c++中输入一个数组查找这个数组中有没有2的n次方的数,用的是VS。
两层循环就可以啊,第一层1-n,将2^n与数组的数一一比较就可以了(第二层)。
至于指数函数,你就用pow(x,y)函数
首先先找到数组中最大的数,max . 根据数组最大的数 ,求2的N次方
创建一个数组arr存储2的N次方
arr[i]
int count= 2;
int i=2;
arr[0]=1;
arr[1]=2;
while(max>count){
i=i+1;
arr[i]=count*2;
}
然后u让原数组的每一个元素和arr一一比较就好,相等就是2的N次方的数
可以对数组中的每个元素遍历,不停除以二,如果得到小数,肯定不是2的n次方,不用做了,这个过程直至最终结果为1,那么该元素就是2的n次方
就像这样
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char const *argv[])
{
vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8};
for_each(v.begin(), v.end(), [](const int& x) { if(x > 0 && (x & (x - 1)) == 0) cout << x << " "; });
return 0;
}