8.27 2018NOIP提高组初赛错题整理
- 第 10 题 (2 分) 为了统计一个非负整数的二进制形式中 1 的个数,代码如下:
int CountBit(int x)
{
int ret = 0;
while (x)
{
ret++;
________;
}
return ret;
}
使用
x
&
=
(
x
−
1
)
x\&=(x-1)
x&=(x−1)可以搞掉
x
x
x最低位的
1
1
1
同样的,使用
x
=
x
−
l
o
w
b
i
t
(
x
)
x=x-lowbit(x)
x=x−lowbit(x)也可以搞掉
x
x
x最低位的
1
1
1
附
int lowbit(int x)
{
return x&-x;//返回x最低位的1及其后面的0组成的数
}
不定项选择
略
问题求解
- 第 17 题 (5 分)方程 a × b = ( a ∣ b ) × ( a & b ) a\times b=(a|b)\times (a\&b) a×b=(a∣b)×(a&b),在 a , b a,b a,b 都取 [ 0 , 31 ] [0, 31] [0,31] 中的整数时,共有_____组解。