tlhyq59
tlhyq59
采纳率0%
2017-03-05 13:56 阅读 1.3k

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • qq_29594393 当作看不见 2017-03-05 14:45

    首先先找到数组中最大的数,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 评论 复制链接分享
  • Fate_Dream Fate_Dream 2017-03-05 14:17

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

    点赞 评论 复制链接分享
  • Fate_Dream Fate_Dream 2017-03-05 14:20

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

    点赞 评论 复制链接分享
  • young2203 young2203 2017-03-05 15:15

    可以对数组中的每个元素遍历,不停除以二,如果得到小数,肯定不是2的n次方,不用做了,这个过程直至最终结果为1,那么该元素就是2的n次方

    点赞 评论 复制链接分享
  • tutuxs Xefvan 2017-03-06 10:34

    就像这样

     #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;
    }
    
    点赞 评论 复制链接分享

相关推荐