读书人

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

发布时间: 2013-04-09 16:45:09 作者: rapoo

高分悬赏:统计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了

读书人网 >C++

热点推荐