正在载入在线练习界面,本页内容可直接阅读…

AK CSP › CSP-S 2026 第一轮真题 › 第 1 题

CSP-S 2026 第一轮 第 1 题:执行下列代码后,cnt 的值是

单项选择 · 枚举与模拟 · 答案 D

题目

执行下列代码后,cnt 的值是( )。

int x = 2026, cnt = 0;
while (x) {
    x &= x - 1;
    cnt++;
}

选项

  • A. 6
  • B. 7
  • C. 11
  • D. 8

答案

D

题解

答案是 D. 8。

关键是这句: ``cpp x &= x - 1; ` 它会把 x 的二进制表示中最右边的一个 1 变成 0`,其余位不变。

例如: ``text x = 10100 x - 1 = 10011 按位与 = 10000 ``

所以,每循环一次就消去一个 1,同时 cnt 加一。直到 x 变成 0,cnt 就等于原来 x 的二进制中 1 的个数。

因为 ``text 2026 = (11111101010)₂ ` 其中有 8 个 1,因此最终 cnt = 8`。

真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1 京公网安备11010502062986号