试卷总分:100分


选择题 5题 10分

01 02 03 04 05


多选题 5题 20分

06 07 08 09 10


编程题 4题 70分

11 12 13 14

E1023 全国青少年信息素养大赛 -算法应用 C++ 初中组 复赛模拟题-2-考试

选择题 共5道

01

后勤物资排序

红军后勤部门记录了来自不同地区的物资,每条记录包含地区名(字符串)和数量(整数)。现在需要按照地区名字典序升序排列,若地区相同则按数量降序排列。下面给出了结构体和比较函数的框架,请选择能让 sort 正确完成上述排序的 cmp 函数。

struct Goods { string region; int amount; };
bool cmp(Goods a, Goods b) {
    // 选项内容
}
sort(arr, arr + n, cmp);
2分
登录后查看选项
02

信号处理规则

红军通信兵收到一串由大写字母组成的信号。她们使用以下规则处理:初始时结果栈为空。依次扫描每个字母 c,若栈非空且 (c + stack.top()) % 2 == 0 成立,则将栈顶元素弹出;否则将 c 压入栈。最后将栈中剩余字母从底到顶输出。根据该规则,下列说法正确的是( )。

2分
登录后查看选项
03

情报文件读取

红军情报员需要从文件 position.txt 中读取两个整数 xy(文件仅包含这两个数,中间用一个空格隔开),计算它们的和,并将结果写入文件 result.txt 中。以下 C++ 代码片段中能够正确实现该功能的是( )。

2分
登录后查看选项
04

快速计算幂次

在情报加密算法中需要高效地计算 xnn 为非负整数)。下面给出了四个递归实现,请选择既能正确计算又能借助分治思想避免大量重复运算的函数。

int Power(int x, int n) {
    // 函数体
}
2分
登录后查看选项
05

情报编号整理

红军指挥部收到大量情报编号(整数),需要做两项处理:去掉重复的编号,并把所有编号按从小到大的顺序排列。已知 C++ 标准库中的 set 容器可以自动完成去重和排序,请问声明存放这些编号的最合适方式是( )。

2分
登录后查看选项

多选题 共5道

06 红军炮兵部队在计算弹道时,需要使用库中的数学函数。已知球坐标转换为直角坐标的公式为 x = r * sin(theta) * cos(phi),下面关于使用cmath函数的说法,正确的有? 4分
登录后查看选项
07 红军情报部门收集到多条敌军动态,每条包含时间、地点编号、威胁等级。现在需要按威胁等级降序排序,若等级相同则按时间升序。以下关于用C++实现结构体排序的描述,正确的有? 4分
登录后查看选项
08 红军通信兵使用字符串处理电报内容。对于string s = \"attack at dawn\";,以下描述正确的有哪些? 4分
登录后查看选项
09 红军后勤需要将物资清单写入文件并从中读取。以下关于C++文件操作的说法,错误的有哪些? 4分
登录后查看选项
10 红军行军时,指挥部使用不同的数据结构来管理作战命令和任务分配。下面关于栈和队列在C++ STL中的描述,正确的有? 4分
登录后查看选项

编程题 共4道

11

红军的指挥信号

题目描述

红军指挥部需要在广袤的草地上选择一个位置建立通讯中心。草地被划分为 n 行 m 列的网格,每个网格中已经测得了一个初始信号强度 bi,j(正整数)。定义通讯中心建立在 (i,j) 位置时的总信号覆盖强度为:第 i 行所有网格的信号强度之和,加上第 j 列所有网格的信号强度之和。

请你编写程序,帮助指挥员找出整个网格中最大的总信号覆盖强度。

输入格式

第一行包含两个正整数 n 和 m,表示网格的行数和列数。

接下来 n 行,每行包含 m 个整数,表示对应网格的信号强度,数字之间用一个空格分隔。

输出格式

输出一行,一个整数,表示最大的总信号覆盖强度。

数据范围

对于 100% 的数据,1≤n,m≤1000,1≤bi,j≤10^4。

输入样例#1

3 3

1 2 3

4 5 6

7 8 9

输出样例#1

42

输入样例#2

2 2

1 1

1 1

输出样例#2

4

15分

C0579
登录后作答
12

红军的测绘队

题目描述

红军测绘队在行军途中标记了 N 个整数坐标点,他们需要从中选出三个点来构建直角三角形测量标识。请编写程序计算:在所有的点中,有多少种选择三个点的方式,使得这三个点可以构成一个直角三角形(直角可以在任意一个顶点,三点不共线)。

输入格式

第一行包含一个整数 N。

接下来 N 行,每行包含两个整数 xi, yi,表示点的坐标。

输出格式

输出一行,一个整数,表示能构成直角三角形的三点组数。

数据范围

3≤N≤100,坐标值在 -1000 到 1000 之间。

输入样例#1

4

0 0

3 0

0 4

1 1

输出样例#1

1

输入样例#2

6

0 0

1 0

0 1

1 1

0 2

2 0

输出样例#2

5

15分

C0580
登录后作答
13

红军的强质数密码

题目描述

为了加强密电的安全性,红军通讯班采用了更为复杂的“强质数”校验规则。一个质数如果它的各位数字之和也是一个质数,那么这个质数被称为“强质数”。

每次发送情报时,指挥员会给出一个上限 N,需要统计在 2 到 N 的范围内有多少个“强质数”。请你编写程序,根据输入的 N 快速给出答案。

输入格式

第一行包含一个整数 T,表示测试用例的数量。

接下来 T 行,每行包含一个整数 Ni

输出格式

输出 T 行,对于每个 Ni,输出一行,包含一个整数,表示 [2, Ni] 中“强质数”的个数。

数据范围

40% 的数据:1≤T≤100,2≤Ni≤1000

100% 的数据:1≤T≤100,2≤Ni≤10^7

输入样例#1

3

10

20

30

输出样例#1

4

5

7

输入样例#2

2

100

50

输出样例#2

21

13

20分

C0581
登录后作答
14

红军物资排序

题目描述

红军后勤部收到了 N 件紧急物资,每件物资都有一个唯一的编号(整数)、重量(整数)和紧急程度(整数,数值越大表示越紧急)。为了快速分派,需要对这些物资进行排序,排序规则如下:

首先按照重量升序排列;如果重量相同,则按照紧急程度降序排列。

请你编写程序,输出排序后的物资编号序列。

输入格式

第一行包含一个整数 N。

接下来 N 行,每行包含三个整数 id, w, u,分别表示物资的编号、重量和紧急程度,数字之间用一个空格分隔。

输出格式

一行,包含 N 个整数,为排序后的物资编号,数字之间用一个空格分隔。

数据范围

1≤N≤10^5,1≤id≤10^9,1≤w,u≤10^6。

输入样例#1

5

1001 10 3

1002 5 5

1003 10 2

1004 5 2

1005 7 4

输出样例#1

1002 1004 1005 1001 1003

输入样例#2

3

2001 8 9

2002 8 5

2003 8 9

输出样例#2

2001 2003 2002

20分

C0582
登录后作答