2.1求二进制数中1的个数
int count(int n)
{
int count=0;
while(n)
{
n&=n-1;
count++;
}
return count;
}
2.2 求N的阶乘末尾有多少个0,求N的阶乘的二进制表示最低位1的位置
int zero(int n)
{
int count=0;
while(n)
{
count+=n/5;
n/=5;
}
return count;
}
int lowest(int n)
{
int count=0;
while(n)
{
count+=n/2;
n/=2;
}
return count+1;
}
2.3寻找发帖水王,即寻找超过数组一半的数
int morehalf(int * list,int n)
{
int times=0;
int tmp,i;
for(i=0;i<n;i++)
{
if(times==0)
{
times++;
tmp=list[i];
}
else
{
if(list[i]!=tmp)
times--;
else
times++;
}
}
return tmp;
}