历年华中科技大学计算机保研机试真题
本文整理华中科技大学计算机保研机试真题,并提供详细解析与代码实现,帮助同学们了解保研机试的难度与题型分布
梅森素数
题目描述
我们将满足 $ M = 2^k - 1 $ 的素数称为梅森素数,其中 $ k $ 也需要为某一素数。
比如 $ 3 = 2^2 - 1 $ 即满足这个条件,但是 $ 2^{11} - 1 = 2047 = 23 \times 89 $ 就不是梅森素数。
给定一个数 $ M $,顺序求出所有不大于 $ M $ 的梅森素数。
输入格式
一个整数 $ M $。
输出格式
每行输出一个梅森素数,格式为 M(k) = M,其中 $ k $ 是素数,$ M $ 是梅森素数。
输入样例
97
输出样例
M(2) = 3
M(3) = 7
M(5) = 31
字符串密码生成
题目描述
给定一个整数 $n$,之后有 $n$ 个字符串。
针对每个字符串,将数据 $6$ 个为一组进行分组,最后一组可能不满 $6$ 个。
比如字符串 huazhongU,将其分为 huazho 和 ngU,然后求出 $6$ 个数字,每个数字分别为对应位置上的字母 $ASCII$ 码的和。
比如 h + n = $214$,u + g = $220$,得到如下 $6$ 个数字:$214$, $220$, $182$, $122$, $104$, $111$。
之后,针对每个数字,按照数位求和,如果求和结果超过一位,重复执行这个过程直到结果仅为 $1$ 位。
如 $182$ => $1 + 8 + 2 = 11$ => $1 + 1 = 2$。
对 $6$ 个数字分别操作后的结果即为最后的密码。
注意,每个字符串可能有任意长度。
输入格式
第一行输入一个整数 $n$,表示字符串的数量。
接下来的 $n$ 行,每行一个字符串。
输出格式
输出 $n$ 行,每行一个 $6$ 位数字,表示对应字符串的密码。
输入样例
2
huazhongU
shangjiaoU
输出样例
742553
431647
有趣的数
题目描述
我们把一个数称为有趣的,当且仅当:
- 它的数字只包含 $0$, $1$, $2$, $3$,且这四个数字都出现过至少一次。
因此,符合我们定义的最小的有趣的数是 $2013$。
除此以外,$4$ 位的有趣的数还有两个:$2031$ 和 $2301$。
输入多个 $n$,请计算恰好有 $n$ 位的有趣的数的个数。
你需要连续处理一系列的输入,当输入的为 $0$ 的时候,输入截止。
由于答案可能非常大,只需要输出答案除以 $1000000007$ 的余数。
输入格式
多个整数 $n$,每行一个。
当 $n = 0$ 时输入截止。
输出格式
对于每个输入的 $n$,输出恰好有 $n$ 位的有趣的数的个数除以 $1000000007$ 的余数。
输入样例
4
6
0
输出样例
3
85
回文字符串
题目描述
给出一个长度不超过 $1000$ 的字符串,判断它是不是回文(顺读,逆读均相同)。
输入格式
输入包括一行字符串,其长度不超过 $1000$。
输出格式
可能有多组测试数据,对于每组数据,如果是回文字符串则输出 $Yes!$,否则输出 $No!$。
输入样例
hellolleh
hellowor1d
输出样例
Yes!
No!
字符串处理
题目描述
无冗余的输入一个字符串。
(1) 输出该字符串。
(2) 对于不是首次出现的字符,对其进行过滤,例如 $abcdacdef$,过滤后为 $abcdef$。
(3) 对于字符 $0-9$,$A-F$,$a-f$,将其对应的 $ASCII$ 码的低 $4$ 位进行对调,例如将 $1011$,转换为 $1101$,并将对应的 $ASCII$ 码对应的字符输出,若为字母,转换为大写。
输入格式
输入一个字符串。
输出格式
第一行输出原字符串。
第二行输出过滤后的字符串。
第三行输出处理后的字符串。
输入样例
abcdacdef
输出样例
abcdacdef
abcdef
01101000
104 H
01100100
100 D
01101100
108 L
01100010
98 B
01101010
106 J
01100110
102 F