首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

高分赏格:统计2的N次方的数的个数

2013-04-09 
高分悬赏:统计2的N次方的数的个数一维数据中,统计是2的N次方的元素的个数,其中N0,1,2...,以下是本人写的

高分悬赏:统计2的N次方的数的个数
一维数据中,统计是2的N次方的元素的个数,其中N=0,1,2...,以下是本人写的程序,请各位大虾指导一下有没有bug!


##include "stdio.h"

#define N  5

int main()
{

int iArray[N];
int i = 0;
int nCount = 0;

for(i = 0;i < N && (scanf("%d",&iArray[i]) == 1);i++);

for(i = 0;i < N;i++)
{
if(!(iArray[i] & (iArray[i]- 1)))
if(iArray[i] != 0)
nCount++;
}

printf("%d\n",nCount);

return 0;


[解决办法]
if (i && !(i&(i-1))) {
//i 為 2 的 n 次方
}
算法很好。
[解决办法]
循环里你这样写,因为任何数 位与0都是0,
 for(i = 0;i < N;i++)
    {   if(iArray[i]>1)
{
        if(!(iArray[i] & (iArray[i]- 1)))
            if(iArray[i] != 0)
                nCount++;       
 }   }
  
[解决办法]
2^n肯定是10000...形式-1肯定是01111...与操作之后肯定是0了

热点排行