林老师 · 客观题题库 · 专题 10 枚举与模拟 · 复习强化

专题 10 枚举与模拟 · 复习强化

100 题 · 每题对应一个知识细节 · 全部原创
真题
复刻
试卷编号ORIG-专题10枚举与模拟-复习强化
题目总数105 题 · 100 分
试卷类型客观题
考生须知:
① 本卷共 9 大部分,合计 105 题 · 100 分,全部为客观题;
② 试卷右上角设有 「提交答卷」「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。

判 分 报 告

0 / 100 分
0
答 对 · 得 0
0
答 错 · 失 0
当前筛选下没有题目

枚举基础

10 QUESTIONS · 2 POINTS EACH
第 1 题 A1 未作答

枚举法的核心思想是( )。

(1 分)
第 2 题 A2 未作答

枚举法设计时最关键的三个问题是( )。

(1 分)
第 3 题 A3 未作答

11001 \sim 100 中找出所有能被 77 整除的数,枚举写法是( )。

(1 分)
第 4 题 A4 未作答

枚举所有有序数对 (i,j)(i, j)1i,jn1 \le i, j \le n,循环写法是( )。

(1 分)
第 5 题 A5 未作答

双重循环枚举 1i,jn1 \le i, j \le n,时间复杂度是( )。

(1 分)
第 6 题 A6 未作答

1+2++n1+2+\cdots+n,枚举累加 O(n)O(n) 与公式 n(n+1)/2n(n+1)/2 O(1)O(1),说法正确的是( )。

(1 分)
第 7 题 A7 未作答

枚举 1n1 \sim n 的所有整数(含两端),循环条件是( )。

(1 分)
第 8 题 A8 未作答

枚举顺序(从大到小 vs 从小到大)影响的是( )。

(1 分)
第 9 题 A9 未作答

用数学推导得到候选答案后,用枚举验证的正确做法是( )。

(1 分)
第 10 题 A10 未作答

枚举法最适合的场景是( )。

(1 分)

枚举技巧

14 QUESTIONS · 2 POINTS EACH
第 11 题 B1 未作答

110001 \sim 1000 中找出最大的能同时被 3355 整除的数,从大到小枚举第一个满足条件的即是,这个数是( )。

(1 分)
第 12 题 B2 未作答

数组 {3,1,4,1,5}\{3, 1, 4, 1, 5\} 中有多少对 (i,j)(i, j) 满足 i<ji < ja[i]+a[j]=6a[i] + a[j] = 6( )。

(1 分)
第 13 题 B3 未作答

枚举集合 {a,b,c}\{a, b, c\} 的所有子集,用二进制 000111000 \sim 111 共( )个状态。

(1 分)
第 14 题 B4 未作答

next_permutation(arr, arr+n) 的功能是( )。

(1 分)
第 15 题 B5 未作答

枚举 nn 的所有因数,高效写法只枚举到 n\sqrt{n},这是因为( )。

(1 分)
第 16 题 B6 未作答

判断 nn 是否为质数,试除到 n\sqrt{n} 即可,因为( )。

(1 分)
第 17 题 B7 未作答

判断一个 55 位数 abcbaabcba 是否回文,需要比较( )次。

(1 分)
第 18 题 B8 未作答

判断 nn 是否为完全平方数,正确做法是( )。

(1 分)
第 19 题 B9 未作答

时限 11 秒(约 10810^8 次运算),双重循环枚举 i,ji, j1n1 \sim nnn 最大约能取( )。

(1 分)
第 20 题 B10 未作答

"找 1n1 \sim n 中所有 xx 使 x2+xnx^2 + x \le n",枚举范围只需到( )。

(1 分)
第 21 题 B11 未作答

"数对 (i,j)(i,j) 使 i×j=ni \times j = n 且 $i
e j",利用对称性只需枚举",利用对称性只需枚举 i ≤ \sqrt{n} 再**乘 2,因为**,因为 (i,j)(j,i)$ 是两个不同答案。

(1 分)
第 22 题 B12 未作答

"在数组中找第一个等于 xx 的位置",找到后可以 break——这属于( )。

(1 分)
第 23 题 B13 未作答

11001 \sim 100 中恰好有两位数字相同的三位数有( )个。

(1 分)
第 24 题 B14 未作答

枚举 1a,b101 \le a, b \le 10,求 a×ba \times b 的最大值——最优是( )。

(1 分)

模拟基础

12 QUESTIONS · 2 POINTS EACH
第 25 题 C1 未作答

模拟法的核心思想是( )。

(1 分)
第 26 题 C2 未作答

模拟题的第一步应该是( )。

(1 分)
第 27 题 C3 未作答

模拟"发牌"过程需要的变量是( )。

(1 分)
第 28 题 C4 未作答

模拟过程中"执行了多少步"通常用( )记录。

(1 分)
第 29 题 C5 未作答

用数组模拟"队列中的人依次离开"的过程,out[i] = true 表示( )。

(1 分)
第 30 题 C6 未作答

模拟 nn 个人围圈报数,用 bool out[N] 标记谁已出圈,报数时遇到 out[i] == true 的人应( )。

(1 分)
第 31 题 C7 未作答

模拟"只剩一人"的过程,终止条件是( )。

(1 分)
第 32 题 C8 未作答

调试模拟程序时,最有用的手段是( )。

(1 分)
第 33 题 C9 未作答

模拟结束后,输出的通常是( )。

(1 分)
第 34 题 C10 未作答

模拟程序的通用框架是( )。

(1 分)
第 35 题 C11 未作答

模拟程序结果与手推不一致时,首先应该( )。

(1 分)
第 36 题 C12 未作答

模拟法最适合的场景是( )。

(1 分)

经典模拟

14 QUESTIONS · 2 POINTS EACH
第 37 题 D1 未作答

约瑟夫问题:nn 人围圈,从 11 号开始报数到 mm 的人出圈,求最后剩下的人。n=5,m=3n=5, m=3 时最后剩下( )号。

(1 分)
第 38 题 D2 未作答

用数组模拟约瑟夫问题时,"报数到 mm 的人出圈"对应代码是( )。

(1 分)
第 39 题 D3 未作答

约瑟夫变体:0011 交替报数、报到 11 的人离开(2021 年真题考法),与普通约瑟夫的区别是( )。

(1 分)
第 40 题 D4 未作答

模拟"从 1111 日起过了 nn 天"的日期,需要处理的核心问题是( )。

(1 分)
第 41 题 D5 未作答

以下年份是闰年的是( )。

(1 分)
第 42 题 D6 未作答

37233723 秒等于( )。

(1 分)
第 43 题 D7 未作答

输出 nn 行三角形(第 iiii*),n=3n=3 时输出是( )。

(1 分)
第 44 题 D8 未作答

按规律 ABCABCABC... 输出第 nn 个字符,n=7n = 7 时是( )。

(1 分)
第 45 题 D9 未作答

44 人轮流发 88 张牌(编号 181\sim8),第 55 张牌发给第( )个人。

(1 分)
第 46 题 D10 未作答

回合制游戏:每回合玩家 A 攻击 B(B 减 33 血)、然后 B 攻击 A(A 减 22 血)。A 初始 1010 血、B 初始 88 血,谁先倒下(血 0\le 0)( )。

(1 分)
第 47 题 D11 未作答

机器人在数轴原点,依次执行指令 R L R R L(R 右移 1、L 左移 1),最终位置是( )。

(1 分)
第 48 题 D12 未作答

3×33 \times 3 格子从 (1,1)(1,1) 走到 (3,3)(3,3),每步只能向右或向下,模拟走法数是( )。

(1 分)
第 49 题 D13 未作答

Josephus 问题:nn 人标号 0n10 \sim n-100 号开始 0,10,1 交替报数、报到 11 的离开。n=5n = 5 时最后剩下的人是( )号。(2021 年完善程序真题考法)

(1 分)
第 50 题 D14 未作答

减肥训练方案(2019 年真题):周一至周四每天半小时(跑 33 公里耗 300300 千卡),周五至周日每天一小时(跑 55 公里耗 600600 千卡),每周最多跑 2121 公里。最优消耗是( )千卡。

(1 分)

枚举优化

10 QUESTIONS · 2 POINTS EACH
第 51 题 E1 未作答

"找 1n1 \sim n 中所有 xx 满足 x3nx^3 \le n",枚举上界应设为( )。

(1 分)
第 52 题 E2 未作答

"三个正整数 a+b+c=10a + b + c = 10",枚举 aabbcc 可以直接算出(c=10abc = 10 - a - b),这将三重循环降为( )。

(1 分)
第 53 题 E3 未作答

"找 i<ji < ja[i]+a[j]=ka[i] + a[j] = k 的对数",枚举 i<ji < j 与枚举所有 (i,j)(i,j) 再除以 22 的关系是( )。

(1 分)
第 54 题 E4 未作答

"打表法"指的是( )。

(1 分)
第 55 题 E5 未作答

"求区间 [l,r][l, r] 的和"朴素枚举 O(rl+1)O(r-l+1) 次,用前缀和数组加速后查询只需( )。

(1 分)
第 56 题 E6 未作答

"枚举 a[i]a[i],查找是否存在 ka[i]k - a[i]",朴素线性扫 O(n)O(n),用标记数组(桶)加速后查找是( )。

(1 分)
第 57 题 E7 未作答

排序后枚举的典型好处是( )。

(1 分)
第 58 题 E8 未作答

有序数组中查找目标值,线性枚举 O(n)O(n) 与二分查找 O(logn)O(\log n) 的关系是( )。

(1 分)
第 59 题 E9 未作答

"求 n!n! 末尾有多少个零",直接算大数会溢出。数学分析后只需枚举 55 的幂次:n/5+n/25+\lfloor n/5 \rfloor + \lfloor n/25 \rfloor + \cdotsn=100n = 100 时末尾零的个数是( )。

(1 分)
第 60 题 E10 未作答

关于枚举优化,错误的是( )。

(1 分)

循环与状态

10 QUESTIONS · 2 POINTS EACH
第 61 题 F1 未作答

nn 个人围圈,当前第 ii 个人报数后下一个报数的人是( )。

(1 分)
第 62 题 F2 未作答

用数组模拟 nn 人的环,下标从 00n1n-1,"下一个"的正确计算是( )。

(1 分)
第 63 题 F3 未作答

模拟环形报数时"跳过已出圈的人"的正确条件是( )。

(1 分)
第 64 题 F4 未作答

nn 位二进制数枚举 nn 个元素的选/不选,第 ii 位为 11 表示选中。n=3n = 3 时二进制 101101 表示( )。

(1 分)
第 65 题 F5 未作答

检查第 ii 位是否为 11 的位运算表达式是( )。

(1 分)
第 66 题 F6 未作答

模拟"电梯在楼层间移动"需要跟踪的状态变量不包括( )。

(1 分)
第 67 题 F7 未作答

模拟过程中每一步"状态如何变化"称为( )。

(1 分)
第 68 题 F8 未作答

n=3n = 3 的约瑟夫(m=2m = 2)模拟过程中,第一轮出圈后的剩余人是( )(初始 1,2,31,2,3)。

(1 分)
第 69 题 F9 未作答

模拟中如果某步操作错误需要"撤销"回到之前的状态,最简单的方法是( )。

(1 分)
第 70 题 F10 未作答

关于模拟中的状态管理,错误的是( )。

(1 分)

枚举与模拟综合

14 QUESTIONS · 2 POINTS EACH
第 71 题 G1 未作答

1,2,31, 2, 3 三个数字(可重复)组成三位数,各位数字之和等于 66 的有( )个。

(1 分)
第 72 题 G2 未作答

模拟约瑟夫 n=5,m=3n=5, m=3 后最后剩下的人是 44 号。用公式 f(n)=(f(n1)+m)%nf(n) = (f(n-1) + m) \% nf(1)=0f(1)=0)验证:f(5)=?f(5) = ?

(1 分)
第 73 题 G3 未作答

模拟 nn 轮游戏,每轮从 1m1 \sim m 中枚举找一个数——总操作次数是( )。

(1 分)
第 74 题 G4 未作答

模拟"报数到 33 的倍数时跳过",正确的条件是( )。

(1 分)
第 75 题 G5 未作答

枚举 11001 \sim 100 中"既能被 44 整除又不能被 100100 整除"的数,条件是( )。

(1 分)
第 76 题 G6 未作答

枚举数组 {5,3,8,2}\{5, 3, 8, 2\} 找第二大的数,正确做法是( )。

(1 分)
第 77 题 G7 未作答

枚举 1501 \sim 50 中"是奇数且是 33 的倍数"的数的个数是( )。

(1 分)
第 78 题 G8 未作答

{1,2,3,4}\{1, 2, 3, 4\} 中选 22 个数的组合数是( )。

(1 分)
第 79 题 G9 未作答

依次执行 push(1) push(2) pop() push(3) pop() pop(),栈中最后剩( )。

(1 分)
第 80 题 G10 未作答

依次执行 enqueue(a) enqueue(b) dequeue() enqueue(c) dequeue(),队头是( )。

(1 分)
第 81 题 G11 未作答

{3,1,2}\{3, 1, 2\} 做冒泡排序第一轮后的数组是( )。

(1 分)
第 82 题 G12 未作答

11 号点 DFS(邻接表按输入序),边为 (1,2),(1,3),(2,4)(1,2), (1,3), (2,4),访问序是( )。

(1 分)
第 83 题 G13 未作答

44 人坐船过河,每人划船时间分别为 1,2,4,81, 2, 4, 8 分钟,两人同行取较长时间,每次最多 22 人。最短( )分钟能全部过河(船须有人划回)。(2021 年真题)

(1 分)
第 84 题 G14 未作答

三重回文数:一个三位数,本身、其平方、其立方都是回文数。满足条件的最小三位数是( )。

(1 分)

易错与综合

16 QUESTIONS · 2 POINTS EACH
第 85 题 H1 未作答

枚举 1n1 \sim n(含两端)写成 for (i = 1; i < n; ++i) 漏掉了( )。

(1 分)
第 86 题 H2 未作答

模拟计数器的初始值应根据( )确定。

(1 分)
第 87 题 H3 未作答

双重循环中内层的循环变量每轮外层开始时必须重置,否则( )。

(1 分)
第 88 题 H4 未作答

模拟程序死循环的最常见原因是( )。

(1 分)
第 89 题 H5 未作答

枚举 n!n! 的值时,n=15n = 15int 已溢出(15!1.3×101215! \approx 1.3 \times 10^{12})。应改用( )。

(1 分)
第 90 题 H6 未作答

输出多组枚举结果时,通常用( )分隔。

(1 分)
第 91 题 H7 未作答

枚举法的优点是( )。

(1 分)
第 92 题 H8 未作答

模拟法的关键是( )。

(1 分)
第 93 题 H9 未作答

枚举 1n1 \sim n 的所有子集,时间复杂度是( )。

(1 分)
第 94 题 H10 未作答

模拟约瑟夫问题中"圈内还有几人"的计数器,每出圈一人应( )。

(1 分)
第 95 题 H11 未作答

关于枚举与模拟的关系,正确的是( )。

(1 分)
第 96 题 H12 未作答

数据范围 n20n \le 20 时枚举所有排列,总排列数约 20!2.4×101820! \approx 2.4 \times 10^{18}——( )。

(1 分)
第 97 题 H13 未作答

枚举二进制子集时 for (int s = 0; s < (1 << n); ++s) 的枚举量是( )。

(1 分)
第 98 题 H14 未作答

模拟"电梯上行到达目标后改下行"需要记录的最少状态是( )。

(1 分)
第 99 题 H15 未作答

枚举法结果与手推不一致时,首先应检查( )。

(1 分)
第 100 题 H16 未作答

关于枚举与模拟,错误的是( )。

(1 分)

真 题 演 练

5 QUESTIONS · 真题演练不计分
第 1 题 单选 未作答

新学期开学了,小胖想减肥,健身教练给小胖制定了两个训练方案。方案一:每次连续跑 33 公里可以消耗 300300 千卡(耗时半小时);方案二:每次连续跑 55 公里可以消耗 600600 千卡(耗时 11 小时)。小胖每周周一到周四能抽出半小时跑步,周五到周日能抽出一小时跑步。另外,教练建议小胖每周最多跑 2121 公里,否则会损伤膝盖。请问如果小胖想严格执行教练的训练方案,并且不想损伤膝盖,每周最多通过跑步消耗多少千卡?( )

(0 分)
CSP-J 2019 · 单选 第11题 | 知识点 贪心、模拟
第 2 题 单选 未作答

有四个人要从 AA 点坐一条船过河到 BB 点,船一开始在 AA 点。该船一次最多可坐两个人。已知这四个人中每个人独自坐船的过河时间分别为 11224488,且两个人坐船的过河时间为两人独自过河时间的较大者。则最短( )时间可以让四个人都过河到 BB 点(包括从 BB 点把船开回 AA 点的时间)。

(0 分)
CSP-J 2021 · 单选 第15题 | 知识点 贪心、枚举
第 106~111 题 阅读程序 (共 0 分) 未作答

1  #include <iostream>
2  #include <cmath>
3  using namespace std;
4 
5  int solve1(int n) {
6      return n * n;
7  }
8 
9  int solve2(int n) {
10      int sum = 0;
11      for (int i = 1; i <= sqrt(n); i++) {
12          if (n % i == 0) {
13              if (n/i == i) {
14                  sum += i*i;
15              } else {
16                  sum += i*i + (n/i)*(n/i);
17              }
18          }
19      }
20      return sum;
21  }
22 
23  int main() {
24      int n;
25      cin >> n;
26      cout << solve2(solve1(n)) << " " << solve1(solve2(n)) << endl;
27      return 0;
28  }

106.

如果输入的 n 为正整数,solve2 函数的作用是计算 n 所有的因子的平方和。( )

107.

1313-1414 行的作用是避免 n 的平方根因子 i(或 n/i)进入第 1616 行而被计算两次。( )

108.

如果输入的 n 为质数,solve2(n) 的返回值为 n2+1n^2+1。( )

109.

如果输入的 n 为质数 pp 的平方,那么 solve2(n) 的返回值为( )。

110.

当输入为正整数时,第一项减去第二项的差值一定( )。

111.

当输入为 5 时,输出为( )。

CSP-J 2023 · 阅读程序 第27-32题 | 知识点 枚举、质数判定
第 113~117 题 阅读程序 (共 0 分) 未作答

1  #include <iostream>
2  using namespace std;
3 
4  bool isPrime(int n) {
5    if (n <= 1) {
6      return false;
7    }
8    for (int i = 2; i * i <= n; i++) {
9      if (n % i == 0) {
10        return false;
11      }
12    }
13    return true;
14  }
15 
16  int countPrimes(int n) {
17    int count = 0;
18    for (int i = 2; i <= n; i++) {
19      if (isPrime(i)) {
20        count++;
21      }
22    }
23    return count;
24  }
25 
26  int sumPrimes(int n) {
27    int sum = 0;
28    for (int i = 2; i <= n; i++) {
29      if (isPrime(i)) {
30        sum += i;
31      }
32    }
33    return sum;
34  }
35 
36  int main() {
37    int x;
38    cin >> x;
39    cout << countPrimes(x) << " " << sumPrimes(x) << endl;
40    return 0;
41  }

113.

当输入为 10 时,程序的第一个输出为 4,第二个输出为 17。( )

114.

若将 isPrime(i) 函数中的条件改为 i <= n / 2,输入 20 时,countPrimes(20) 的输出将变为 6。( )

115.

sumPrimes 函数计算的是从 22nn 之间的所有素数之和。( )

116.

当输入为 50 时,sumPrimes(50) 的输出为( )。

117.

如果将 for (int i = 2; i * i <= n; i++) 改为 for (int i = 2; i <= n; i++),输入 10 时,程序的输出( )。

CSP-J 2024 · 阅读程序 第16-20题 | 知识点 差分、模拟
第 119~123 题 完善程序 (共 0 分) 未作答

试补全程序。

1  #include<iostream>
2  #include<vector>
3  using namespace std;
4 
5  bool isSquare(int num) {
6    int i = ① ;
7    int bound = ② ;
8    for (; i <= bound; ++i) {
9      if ( ③ ) {
10        return ④ ;
11      }
12    }
13    return ⑤ ;
14  }
15  int main() {
16    int n;
17    cin >> n;
18    if (isSquare(n)) {
19      cout << n << " is a square number" << endl;
20    } else {
21      cout << n << " is not a square number" << endl;
22    }
23    return 0;
}

119.

①处应填( )

120.

②处应填( )

121.

③处应填( )

122.

④处应填( )

官方答案标注为 C(A 也算正确)。

123.

⑤处应填( )

CSP-J 2024 · 完善程序 第33-37题 | 知识点 do-while循环、模拟