B. 普及组CSP-J初赛程序阅读训练01

    客观题

普及组CSP-J初赛程序阅读训练01

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

01 #include <bits/stdc++.h>
02 using namespace std;
03
04 using i64 = long long;
05
06 int popcount(i64 x)
07 {
08     int res = 0;
09     while(x)
10     {
11         if(x & 1 == 1)
12             res++;
13         x >>= 1;
14     }
15     return res;
16 }
17
18 int calc(i64 x)
19 {
20     int sum = 0;
21     for(i64 i = 1; i <= x; i++)
22         sum += popcount(i);
23     return sum;
24 }
25
26 int sum(i64 l, i64 r)
27 {
28     return calc(r) - calc(l);
29 }
30
31 int main()
32 {
33     i64 l, r;
34     cin >> l >> r;
35     cout << calc(l) << ' ' << sum(l, r) << endl;
36     return 0;
37 }

第 1 题

若程序输入为 5 8,则程序输出 7 6。 {{ select(1) }}

  • 正确
  • 错误

第 2 题

若将第 11 行中的 & 符号改为 ^ 符号,程序输出结果一定不会改变。 {{ select(2) }}

  • 正确
  • 错误

第 3 题

若将头文件 #include <bits/stdc++.h> 改成 #include <stdio.h>,程序仍能正常运行。 {{ select(3) }}

  • 正确
  • 错误

第 4 题

若输入为 1 12,则输出是什么? {{ select(4) }}

  • 1 21
  • 1 20
  • 1 22
  • 2 22

第 5 题

程序中的 sum 函数实现了什么功能? {{ select(5) }}

  • 计算了 [l, r] 区间内的每个数二进制位上 1 的个数之和
  • 计算了 [l, r] 区间内的每个数二进制位上 0 的个数之和
  • 计算了 (l, r) 区间内的每个数二进制位上 1 的个数之和
  • 计算了 (l, r) 区间内的每个数二进制位上 0 的个数之和

2026年08月19日CSP-J初赛专项训练

未参加
状态
已结束
规则
OI
题目
2
开始于
2026-8-19 18:00
结束于
2026-8-21 6:00
持续时间
36 小时
主持人
参赛人数
14