#12294. 找座位
找座位
找座位(C语言二级 · 编程题)
时间限制: 5000 ms 内存限制: 65535 KB 分值: 20 分(建议)
🌟 题目描述
在一场考试中,监考老师手里有一份签到表,按座位号顺序列出所有学生的学号。 学生如果要根据这份表找到自己的座位号会很麻烦。 本题要求编写一个程序,帮助学生快速查询自己的座位号。
📥 输入格式
- 第一行:一个正整数
N
(不超过 $10^3$),表示参加考试的学生人数。 - 接下来
N
行:第i
行给出座位号为i
的学生学号(学号是一个不超过 8 位的数字字符串,可能有前导 0,且不重复)。 - 再一行:一个正整数
M
(不超过 $10^5$),表示要查询的学生人数。 - 接下来
M
行:每行给出一个要查询的学生学号。
📤 输出格式
对于每个待查询的学生学号:
- 如果该学生在考场中有座位,输出其座位号(从 1 开始编号);
- 否则输出
"NA"
(Not Available,表示无座位)。
🔒 输入范围(约束)
- 学号长度 ≤ 8(可能有前导零)
- 学号在表中唯一出现一次或不出现
- 输出结果不超过整型范围
✅ 样例输入
5
100013
200233
100001
520077
886759
4
520077
000000
100013
999999
🎯 样例输出
4
NA
1
NA
📊 题目分析与解法
- 建立一个 学号 → 座位号 的快速映射表(哈希表/字典)。
- 查询时直接在映射表中查找学号,存在则输出座位号,否则输出
"NA"
。
时间复杂度:
- 建表:
- 查询: / 次(哈希表)