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