c++中输入一个数组查找这个数组中有没有2的n次方的数

c++中输入一个数组查找这个数组中有没有2的n次方的数,用的是VS。

c++

5个回答

首先先找到数组中最大的数,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次方的数

两层循环就可以啊,第一层1-n,将2^n与数组的数一一比较就可以了(第二层)。

至于指数函数,你就用pow(x,y)函数

可以对数组中的每个元素遍历,不停除以二,如果得到小数,肯定不是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;
}
tutuxs
Xefvan 如果vector报错,就加个头文件
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!