历年北京理工大学计算机保研机试真题
本文整理北京理工大学计算机保研机试真题,并提供详细解析与代码实现,帮助同学们了解保研机试的难度与题型分布
将偶数表示为两个素数之和
题目描述
输入两个整数 $m$ 和 $n$ ($6 \leq m \leq n \leq 50$),将区间 $[m, n]$ 中的所有偶数表示为两个素数相加的形式。
将结果以:a=b+c 的格式输出,其中 b <= c。有多种素数相加形式,则把所有的情况都输出,按 b 从小到大排序,每种情况占一行。
~~输出这些素数及其出现的次数,输出次序按照素数出现的次数从多到少输出;若出现次数相同,按照素数从大到小输出。若偶数有多种素数相加形式,则把所有的情况都输出,每种情况占一行。~~
输入格式
输入两个整数 $m$ 和 $n$,用空格分隔。
输出格式
输出每个素数及其出现的次数,按照出现次数从多到少排序,次数相同的素数按从大到小排序。
每个偶数可能有多种表示形式,每种形式占一行。
输入样例
6 10
输出样例
6=3+3
8=3+5
10=3+7
10=5+5
最后一个重复数字
题目描述
给定任意个整数,以逗号隔开,输出最后一个重复数字。
如果没有重复数字,输出 $ -1 $。
输入格式
输入为一行,包含若干个以逗号隔开的整数。
输出格式
输出最后一个重复数字。
如果没有重复数字,输出 $ -1 $。
输入样例
1,2,3,4,4,3,2,1
输出样例
1
二分查找统计次数
题目描述
给定一个有序数组,使用二分法查找指定的数,并输出查找的次数。
输入格式
第一行包含一个整数 $n$,表示数组的长度。
第二行包含 $n$ 个整数,表示有序数组的元素。
第三行包含一个整数 $x$,表示要查找的数。
输出格式
输出一个整数,表示查找的次数。
如果未找到,则输出 $-1$。
输入样例
5
1 3 5 7 9
5
输出样例
1
判断身份证校验位是否正确
题目描述
给定一个身份证号码,判断其最后一位校验位是否正确。
如果不正确,给出正确的身份证号码。
身份证校验规则主要涉及中国大陆的 $18$ 位居民身份证号码,其校验机制基于 $ISO 7064:1983$ 标准的 $MOD 11-2$ 算法。
以下是详细规则:
校验码计算步骤
- 前 $17$ 位加权求和
每位数字对应权重系数(从左到右):
$[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]$
计算公式:
$S = Sum(Ai \times Wi)$
($Ai$ 为第 $i$ 位数字,$Wi$ 为对应权重)
- 计算模 $11$ 的余数
$Y = S \mod 11$
- 匹配校验码
根据余数 $Y$ 对照表得到校验码 $C$:
| $Y$ | $0$ | $1$ | $2$ | $3$ | $4$ | $5$ | $6$ | $7$ | $8$ | $9$ | $10$ |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| $C$ | $1$ | $0$ | $X$ | $9$ | $8$ | $7$ | $6$ | $5$ | $4$ | $3$ | $2$ |
(注:$X$ 代表罗马数字 $10$)
输入格式
输入一个 $18$ 位的身份证号码。
输出格式
如果校验位正确,输出 Correct;如果不正确,输出正确的身份证号码。
输入样例
11010519491231002X
输出样例
Correct
学生成绩处理
题目描述
给定几组数据,每组数据包含学生的姓名和三个成绩。
要求输出所有不及格的学生,并按照平均成绩进行排序。
输入格式
每组数据包含一个字符串 $name$ 和三个整数 $score1$, $score2$, $score3$,分别表示学生的姓名和三个成绩。
输入以文件结束符(EOF)终止。
输出格式
对于每个不及格的学生,输出其姓名和平均成绩,保留两位小数。
输出按照平均成绩升序排列。
输入样例
Alice 80 90 85
Bob 50 40 60
Charlie 70 60 65
输出样例
Bob 50.00