CSP-J 2023年入门组初赛模拟题(8)

一、单项选择题 (共15题,每题2分,共计30分;每题有且仅有一个正确选项)

1. 182 和 208 的最大公约数是。(B

A. 2
B. 26
C. 28
D. 29
题解&解析:
可以通过试除的方法算出这两个数的最大公约数是 29。
2. 用1、2、3、4、5 这五个数字可组成多少个比 20000 大且百位数
字不是 3的无重复数字的五位数。( D
A. 80
B. 96
C. 72
D. 78
题解&解析:
把 3 放在最高位上,其余四个数可以任意放置,一共有
4!=24 种方案;把 2、4、5 放在最高位上,有 3 种选择,
百位上不能放 3,也只有 3 种选择,其余位置有 3! = 6 种
方案,因此有 3 3 3! = 54 种方案。一共有 24+54=78 种
不同方案。
3. 有一个长为 6 的 A 序列:{3, 20, 4, 6, 1},现通过进行交换其中相
邻两个数字的操作进行排序,要将 A 序列排成从小到大的递增序列最
少要进行多少次交换操作。( B
A. 5
B. 6
C. 7
D. 15
题解&解析:

将 1 移到最左侧和将 20 移到最右侧。
4. 一个栈的输入顺序为 1 2 3 4 5,下列序列中可能是栈的输出序列
是。( C)
A. 54312
B. 24135
C. 21543
D. 12534
题解&解析:
太简单不讲
5. 二叉树 T,已知其先根遍历是 1 2 4 3 5 7 6(数字为结点的编号,
以下同),中根遍历是2 4 1 5 7 3 6,则该二叉树的后根遍历是( C )。
A. 4 2 5 7 6 3 1
B. 7 4 2 5 6 3 1
C. 4 2 7 5 6 3 1
D. 4 2 7 6 5 3 1
题解&解析:
通过前序遍历和中序遍历构建出原树,然后再求其后序遍
历即可

 

6. 如果用一个字节来表示整数,最高位用作符号位,其他位表示数值。
例如 00000001 表示 +1, 10000001 表示 −1,试问这样表示法的
整数A的范围应该是 ( C )。
A. −127 ≤ A ≤ 128
B. −128 ≤ A ≤ 128
C. −127 ≤ A ≤ 127
D. −128 ≤ A < 128
题解&解析:
注意题目说 是原码,因此无法表示出 −128
7. 定义一种字符串操作,一次可以将其中一个元素移到任意位置。举
例说明,对于字符串 BCA 可以将 A 移到 B 之前,变字符串 ABC,
如果要将字符串 DACHEBGIF 变成ABCDEFGHI 最少需要次操作( C )。
A. 6
B. 5
C. 4
D. 7
题解&解析:
注意啊注意,这里说的是最少
四次操作分别为: B 移动到 AC 之间;D 移动到 CH 之
间;H 移动到 GI 之间;F 移动到 EG 之间

 

8. 今年信息学进复赛的同学有 6人,老师将他们排成 一圈 分发奖品,
请问有几种排法( B )。
A. 240
B. 120
C. 60
D. 180
题解&解析:

圆排列的方案数 = (n − 1)!(直接背)
9. 从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)
的一端,这种排序方法称为( A )。
A. 插入排序
B. 选择排序
C. 快速排序
D. 归并排序

题解&解析:

背的内容
10.电线上停着两种鸟 (A, B),两只相邻的鸟就将电线分为了一个线段。
这些线段可分为两类: 一类是两端的小鸟相同;另一类是两端的小鸟不
相同。已知:电线上两个顶点上正好停着相同的小鸟,试问两端为不同
小鸟的线段数目一定是( A )。
A. 偶数
B. 奇数
C. 可奇可偶
D. 数目固定

题解&解析:

通过例子来理解
假设两端均为 A,那么如果向其
中填 A 则是将区间划分为了两个子区间,如果填 B 则是产
生了两个不同小鸟的线段。可以看出每次只能产生偶数个不
同小鸟的线段,所以总数⽬一定是偶数。

 

11.设有一个二维数组A。在行下标0 5,列下标1 5的范围内存上数
据元素,A的每个数据元素均占2个字节。在按行存储的情况下,已知数
据元素 A[3][3] 的第一个字节是 2019,则 A[4][4] 的第一个字节的地
址为( D )。
A. 2026
B. 2027
C. 2031
D. 2033

题解&解析:

数数
12.表达式 (1+34)*5-56/7 的后缀表达式为(A)。
A. 1 34 + 5 * 56 7 / -
B. 1 34 + 5 56 7 - * /
C. - * + 1 34 5 / 56 7
D. 1 34 5 * + 56 7 /

题解&解析:

中缀表达式转后缀表达式。
入栈模拟即可
13.一个字长为8位的整数的补码是 1111 1001 ,则它的原码是( A )。
A. 10000111
B. 11111001
C. 01111001
D. 00000111


题解&解析:


太简单不讲

14.关于Catalan数Cn,下列说法错误的是 ( B )。
A. Cn表示含n对括号的合法括号序列的个数。
B. Cn表示有n + 1个结点的不同形态的二叉树的个数。
C. Cn表示通过连接顶点而将n + 2边的凸多边形分成三⻆形的方法
个数。
D. Cn表示长度为n的入栈序列对应的合法出栈序列个数

题解&解析:

其表示有 n 个节点的不同形态的二叉树的个数
15.字符串 abcab 本质不同的子串(包含空串)个数( D )。
A. 15
B. 12
C. 14
D. 13

题解&解析:
本质不同的字串分别为:“”、“a”、“b”、“c”、
“ab”、“bc”、“ca”、“abc”、“bca”、“cab”、
“abca”、“bcab”、“abcab”,共 13 种

二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确

填T,错误填F;除特殊说明外,判断题1.5分,选择题3分,共计40分)

(1)

 

16.输入的x值应在 [0, n−1] 的范围内。( F )
17.把第10行改成d[x]++ ,不影响程序运行结果。( T )
18.对任意在[1, 9]之间的数i,都有 d[i-1]<d[i]<d[i+1] 。( F )
19.把第16行改成\if(d[i]>d[i-1]),程序运行的结果会发⽣改变。( F
20.输人n=9后,接着输入: 1 3 4 5 2 4 3 5 2 后,程序输出结果为(B)
A. 1:1 2:2 3:3 4:4 5:5
B. 1:1 2:2 3:4 4:6 5:8
C. 1:0 2:1 3:2 4:1 5:2
D. 1:1 2:2 3:3 4:2 5:3
21.(4分)把程序第 17 行改成 print("%3d" ,i); 后,输入 n = 10 后,
接着输入:1 3 4 1 5 4 4 3 5 1 后,程序输出结果为(C)。
A. 4 3 4 3
B. 3 2 3 2
C. 1 3 4 5 D. 1 2 3 4 5
(2)

22.若 n < r,则程序无输出。( T
23.程序结束时,对任意 1 ≤ i ≤ n, mark[i] == 0 。( T
24.此程序的时间复杂度为 O(n)。( F
25.若输入为 4 3 ,则输出中数字 1 和 2 的个数不同。( F
26.(4分)若输入为 6 3 ,则函数 print 的执行次数为(B)。
A. 60
B. 120
C. 6
D. 720
27.若输入为 7 4,则输出的最后一行为(D)。 A. 1 2 3 4
B. 4 5 6 7
C. 4 3 2 1
D. 7 6 5
(3)

代码很长,但是千万别慌

28.(2分)第 33, 34 行 add_edge(u, v);add_edge(v, u); 只需保留
任意一行也不会影响程序的正确性。( F )
29.第37行函数调用 dfs(x,y) ,只需保证 1≤x≤n, y≤0 即可。( T )
30.第3行输入若有重复(重边),不影响输出结果的正确性。( F )
31.(2分)程序运行结束时可能存在正整数 i(i≤n) 使sz[i]等于
mxs[i]。( F )
32.(4分)n=6,二元组 (u, v)各个值分别是{(1,3),(6,3),(2,6),(5,6),
(3,4)}则输出是(B)。
A. 3 2
B. 3 3
C. 6 2
D. 6 3
33.(4分)若n=1000,则程序运行后 mxs[] 数组中除初始值 inf 外,
最大值是(D)。
A. 1000
B. 499
C. 500
D. 999
说明: 该段代码是在计算树的编号最小的重心。重心的定义如下:
设 f(u) 表示以 u 为树根时,其所有儿子的子树节点数最大的
值,则 f(u) 最小的点即为重心。计算重心时,依次计算每个点
的子树节点数,再用总节点数 −sz[u] 的方式计算出由父亲侧构
成的子树的节点数。之后将这些节点数取最大值就可以计算出单
点的 f(u) 值。

三、完善程序(单选题,每小题3分,共计30分) 

(1)
有一个n*n(2≤n≤5000) 的方阵,其中每个方格有一个电力值。小Y可
以在这个方阵中得到电力,方法就是在一些方格放上电电鼠来吸收电
力,这样就可以获得这些方格上的电力。不过,放的电电鼠须要遵循两
个规则:
1. 一个方格最多只能放一只电电鼠;
2. 所有2*2的子矩阵(共有(n−1) *(n−1)个)必须恰好包含两只电电 鼠。
小Y用了一个程序求出了能获得的最大总电力值.
34.①处应填( )
A. [N][2]
B. [2][N]
C. [5100][5100]
D. [N][1100]
35.②处应填( )
A. a[i][j]
B. a[j][i]
C. a[(i+j)&1][i+j]
D. a[i+j][(i+j)&1]
36.③处应填( )
A. a[i][j]
B. a[j][i]
C. a[(i+j)&1][i+j]
D. a[i+j][(i+j)&1]
37.④处应填( )
A. j&1
B. !(j│1)
C. !(j&1)
D. j│1
38.⑤处应填( )
A. min(ans1, ans2)
B. max(ans1,ans2)-min(ans1,ans2)
C. ans1+ans2
D. max(ans1, ans2)
答案
CABCD
解析
说明: 观察规律,我们可以发现,在任何一种方案中,都会呈现
出重复前两行或者重复前两列的规律。也就是说,我们可以通过
枚举这两种不同的情况来找出所有的方案。观察规律可以发现,
在列复制的情况下,每一行要么是奇数编号的点全部被选择,要
么是偶数编号的点全部被选择。所以在代码中,我们可以枚举所
有的行并将其奇数点的和与偶数点的和统计起来,并贪心地选择
最大的一种策略,这就是代码 中 ans1 的计算原理。 ans2 的
计算无非就是在计算行复制的情况,与上面的过程是类似的
(2)
给定 n 个不同的数 a 1 , ..., a n 。求 n 个数字当中第 l 到第 r 个数当
中的中位数,我们可以用二分的经典思想来解决此问题。
所谓中位数就是 n 个数中从小到大排序第 ⌊n/2⌋ 个数

 

39.①处应填( ) A. n * 2
B. n
C. maxn + 1
D. maxn - 1
40.②处应填( )
A. l < r
B. l <= r
C. l + r < n
D. l + 1 < r
41.③处应填( )
A. r - 1
B. l + r
C. r - l + 1
D. D. (l + r) >> 1
42.④处应填( )
A. l
B. r
C. lft
D. rgt
43.⑤处应填( )
A. l
B. r
C. lft
D. rgt
答案
CDDBA
解析
说明:对于每个询问的区间,通过二分的方式来寻找中位数。每
次二分一个 mid,查找序列中有多少个数字是小于它或大于它的,
根据这个数字再继续进行二分过程直到退出二分。注意由于这里
使用的二分中使用的区间是 [l, r),所以变量 r 是 maxn+1 。
完结撒花❀
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CSP(计算机程序设计能力竞赛)- J(Java 动态语言)考试是中国计算机学会织的一项重要编程竞赛,旨在测试参赛选手在程序设计方面的能力。第三套初赛模拟试是考生的入门级试,下面将用300字回答该。 第三套初赛模拟试一共包括三道目,每道目都涉及到基础的编程知识和算法思想。首先是分数的计算,考生需要编写一个程序来计算两个分数的和、差、积和商,并将结果以最简形式输出。这个目主要考察基本的运算和分数化简的方法。 第二道目是与的和,要求编写一个程序,根据给定的正整数序列和指定的正整数 m,计算序列中存在几个连续的子序列,其和等于 m。这个目需要考生采用双指针法来解决,其中一个指针指向子序列的起始位置,另一个指针指向子序列的结束位置,通过移动两个指针来判断和是否为 m。 最后一道目是循环的次数,考生需要编写一个程序,根据给定的初始数 x 和目标数 y,计算将 x 不断加上 d 直到大于等于 y 时的循环次数。这个目需要使用循环结构来实现,通过不断累加 d 直到大于等于 y 才停止循环,并记录循环次数。 回答这套试需要熟悉基本的编程语法和常用的算法思想,包括分数化简、双指针法和循环结构等。此外,在编写程序的过程中还需注意边界条件的处理和程序的效率。通过解答这套试,考生可以提高自己的编程能力和算法思维,为参加更高级别的CSP比赛打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值