试卷 第十四届蓝桥杯青少组C++国赛高级组真题试卷
第十四届蓝桥杯青少组C++国赛高级组真题试卷
选择题
第 1 题    单选题
以下选项中,没有利用“比较”操作的算法是 ( )
A.

选择排序

B.

冒泡排序

C.

插入排序

D.

桶排序

第 2 题    单选题

执行以下代码,输出的结果是 ( )

A.

21

B.

41

C.

43

D.

45

第 3 题    单选题
已定义字符串string s ="Let lt Be",下列哪个选项可以获得字符串s的长度? ( )
A.
s.size()
B.
len(s)
C.
sizeof(s)
D.
strlen(s)
第 4 题    单选题
以下关于C++类的说法,正确的是 ( )
A.
析构函数和构造函数一样可以进行重载
B.
析构函数里不能使用return语句
C.
构造函数不需要返回值时,需要定义为返回void类型
D.
如果自定义构造函数的参数都是默认参数,则不能再定义一个无参数的构造函数
第 5 题    单选题
假设入栈顺序为a、b、c、d、e,则出栈序列不可能是 ( )
A.
a、b、d、c、e
B.
b、a、d、c、e
C.
d、c、a、b、e
D.
c、b、a、d、e
编程题
第 6 题    问答题

八进制回文平方数

时间限制:1 Sec

内存限制:128 MB

【题目描述】

给定一个十进制正整数N (1≤N≤1000000000) ,请从小到大输出1~N之间 (含1和N) 所有满足以下要求的数:

1.这个数转换为八进制后是一个回文数

2.这个数是一个平方数。 

例如: N=20,在1~20之间满足要求的数有1、4、9,因为有

1转换为八进制为1,是一个回文数: 且1 = 12,是一个平方数

4转换为八进制为4,是一个回文数: 且4 = 22,是一个平方数

9转换为八进制为11,是一个回文数: 且9 = 32,是一个平方数。 

故输出1 4 9 

【输入】

输入一个十进制正整数N(1≤N≤1000000000)

【输出】

输出一行,包含若干个十进制正整数,表示满足题目要求的数。结果从小到大输出,两个正整数之间用一个空格隔开

【样例输入】

20 

【样例输出】

1 4 9

【提示】

八进制数: 指逢8进位的一种进位计数制,以0、1、2、3、4、5、6、7共八个数码表示。例如: 十进制数8等于八进制数10,十进制数64等于八进制数100,以此类推。

 回文数: 反向排列与原来一样的数。例如,12321是回文数,1231不是回文数。

平方数: 可以写成某个整数的平方的数。例如,9 = 32,9 是一个平方数。

第 7 题    问答题

主要成分

时间限制:2 Sec

内存限制:128 MB

【题目描述】

从金星探测器传回来一组测量数据,这是一个长度为N (1≤N≤1000000) 的整数数列,数列中的每个整数代表某一种化学成分 (相同的整数代表相同的化学成分)。

主要成分: 指在包含的所有化学成分中比例超过一半(N/2的结果向下取整)的成分现在要判断其是否有主要成分;如果有,其主要成分是哪一种?

 

例如:

当N=7,整数数列为1 2 3 2 2 1 2,其中成分2有4个,超过了7的一半 (7的一半向下取整为3) ,所以主要成分是2。

当N=6,整数数列为1 102 3131 1 102,其中的每一种成分都只有2个,未超过6的一半(6的一半为3),所以没有主要成分。

 

【输入】

第一行输入一个正整数N (1≤N≤1000000),表示数列长度

第二行输入N个整数 (1≤整数≤2000000000) ,每个整数表示一种化学成分,两个整数之间用一个空格隔开

 

【输出】

输出一行,如果存在主要成分,则输出代表主要成分的整数,否则,输出No

【样例输入】

7

1 2 3 2 2 1 2

【样例输出】

2

第 8 题    问答题

简单算术题

时间限制:1 Sec

内存限制:128 MB

 

【题目描述】

给定一道没有括号的四则混合运算算术题 (可能包含多余的空格) ,请编程计算出结果。运算规则如下

1.既有乘、除法又有加、减法的,要先算乘除法,再算加减法

2.同级运算时,要从左往右按顺序计算

3.所有除法运算的结果都只保留整数部分 (直接舍弃小数部分)

例如: 当算术题为 2 + 3*4 - 10/6 + 1/2*4时,优先计算乘除法,有3*4=12,10/6=1,1/2*4=0; 然后再计算加减法,2+3*4-10/6+1/2*4=2+12-1+0=13,故输出13

 

【输入】

输入一个字符串,表示算术题,5≤字符串长度≤100000,字符串中只包含数字字符以"+"、"-"、"*"、"/"运算符,不含括号,可能包含空格;

算式中的运算数范围: 1≤运算数≤200

 

【输出】

输出一个整数,表示算术题的计算结果题目数据保证算式的每一步运算的结果都在-2x109~2x109之间

 

【样例输入】

2+3*4-10/6+1/2*4

 

【样例输出】

13

第 9 题    问答题

数独填数

时间限制:2 Sec

内存限制:128 MB

【题目描述】

数独是源自18世纪瑞士的一种数学游戏。玩家需要根据9x9网格上的已知数字,将剩余的所有空格填上数字,使得9x9网格上每一行、每一列及每一个3x3方块 (粗线)内的数字均包含1~9,并且数字不重复是完成后的结果

例1: 下图(左)是未完成的数独,下图(右)是完成后的结果

【输入】

输入一个未完成的数独,数独可以使用如下9x9的字符方阵表示(空格用"."表示)


【输出】

输出完成后的数独 

【样例输入】

17.5..8..

.52.1....

.....759.

.8...94.3 

.197.4..8

7......15

4.1...6.. 

3...2..59 

...96..3. 

【样例输出】

174593826

952816347

638247591 

286159473

519734268

743682915

491375682

367428159

825961734

第 10 题    问答题

数学实验

时间限制:1 Sec

内存限制:256 MB 

【题目描述】

老师在黑板上写出了个正整数数列,让所有同学都来做一个数学实验,要求如下

1.这组数总共不超过500000个,每个数的大小范围在1~80之间;

2.要从这组数中找出两个相邻且相同的数,删掉其中一个数,剩下的一个数加1(例如: 两个相邻的6,变成一个7) 

3.重复执行第2步;

4.当操作无法继续进行时,实验结束,此时,实验结果就是这组数里面最大的数

 

注意:不同的实验方案得到的最大数不同

 

现在给定了一个正整数数列,请你编写程序计算出能够得到的实验结果最大是多少例如:

当N=6,这个正整数数列是 1、2、2、2、3、4时,得到最大数的方法如下先将后面两个2变成一个3,然后3和3变成4,最后4和4变成5。可以证明,没有其它更好的方案,故输出5。

 

【输入】

第一行输入一个正整数N (1≤N≤500000)

第二行输入N个正整数 (1≤正整数≤80),相邻两个数之间用一个空格隔开

 

【输出】

输出一个正整数,表示实验结束后能够得到的最大的实验结果 

【样例输入】

6

1 2 2 2 3 4 

【样例输出】

5

第 11 题    问答题

月球疏散行动

时间限制:1 Sec

内存限制:128 MB

 

【题目描述】

为了避免太阳爆发引起的文难,人类决定给地球装上发动机,最终逃离太阳系。原计划要带着月球起走,结果月球行星发动机发生文难性故障,必须炸毁月球。为此,在月球上的工作人员都要疏散回地球。

 

目球基地有一艘太空穿梭机可以用来疏散工作人员。但是人们分散在各处,必须前往基地集合,他们到达基地的时间不等。穿梭机可以将抵达基地等待登机的工作人员先送回地球,然后再返回基地疏散下一批工作人员。

 

总共有N名工作人员需要疏散,太空穿梭机从月球到地球往返一次花时间M小时,第i个人抵达基地等待登机的时刻为Ti;。

 

指挥官希望所有工作人员在基地等待的时间总和最小,而且他可以任意安排穿梭机的起飞时间,假定穿梭机足够大,可以装下所有工作人员,在不计登机和下机时间等因素的情况下,最小的等候时间总和是多少?

 

【输入】

第一行输入两个正整数N (1≤N≤500) ,M (1≤M≤100) ,以一个空格隔开,分别表示工作人员人数和穿梭机的往返时间

第二行输入N个正整数,依次表示某个工作人员到达基地等候登机的时刻Ti(1≤Ti≤4000000) ,相邻两数之间用一个空格隔开

 

【输出】

输出一个整数,表示所有工作人员等候时间之和的最小值 (单位: 小时)

 

【样例输入】

5 4

11 3 3 5 10

 

【样例输出】

3

 

【提示】

例如: N=5,M=4,1号~5号工作人员到达基地的时刻依次为11、3、3、5、10穿梭机可以在3时出发,先送2号、3号工作人员去地球,然后于7时返回月球基地:此时,4号工作人员已于5时到达基地,等候了2小时。这时让穿梭机马上送走他,然后于11时从地球返回基地;

此时,5号工作人员已于10时到达基地,等候了1小时;

而1号工作人员刚好于11时到达基地,等候0小时;

穿梭机于11时将两人送走,即完成全部疏散任务。总的等候时间=4号工作人员等候时间+5号工作人员等候时间=2+1=3小时。 

无法再找到有更小等候时间总和的方案.

答题卡
选择题
1 2 3 4 5
编程题
6 7 8 9 10 11
题目总数:11
总分数:100
时间:120分钟