历年杭州电子科技大学计算机考研复试机试真题
本文整理杭州电子科技大学计算机考研机试真题,并提供详细解析与代码实现,帮助同学们了解保研机试的难度与题型分布
死神来了
题目描述
有一天,王小子在遨游世界时,遇到了一场自然灾害。
一个人孤独的在一个岛上,没有吃的没有喝的。
在他饥寒交迫将要死亡时,死神来了。
由于这个死神在成神之前是一个数学家,所以他有一个习惯,会和即死之人玩一个数学游戏,来决定是否将其灵魂带走。
游戏规则是死神给王小子两个整数 $n$($100 \leq n \leq 1000000$), $m$($2 \leq m \leq n$),在 $1$ ~ $n$ 个数中,随机取 $m$ 个数,问在这 $m$ 个数中是否一定存在一个数是另一个数的倍数,是则回答“YES", 否则”NO"。
如果王小子回答正确,将有再活下去的机会。
但是他很后悔以前没有好好学习数学,王小子知道你数学学得不错,请你救他一命。
输入格式
有多组测试数据,不多于 $10000$;
每组有两个数 $n$, $m$;
以文件结束符 $EOF$ 为结束标志。
输出格式
输出"YES"或"NO"。
输入样例
100 80
100 20
输出样例
YES
NO
字符串区间翻转
题目描述
小杭有一个由 $0$ 和 $1$ 组成的字符串
现在小杭有一次机会,可以选择一个任意的区间 $[L, R]$,将该区间内的所有字符串进行翻转(即 $0$ -> $1$, $1$ -> $0$)。
请问小杭经过一次翻转之后字符串中最多会有多少个 $1$?
输入格式
第一行输入一个正整数 $n$,表示字符串长度,$n <= 10^7$。
接下来一行一个输入一个 $01$ 字符串。
可能有多组测试数据输入。
输出格式
输出题目要求的答案。
输入样例
4
1001
输出样例
4
调查作弊
题目描述
学校 $icpc$ 举办了一场选拔赛,赛后由学长人工进行代码查重,学长们非常严谨,每当一个人发现学生 $a$ 和学生 $b$ 的代码相似,他就会进行上报并记录下来,如果 $a$ 和 $b$ 的代码相似,$b$ 和 $c$ 的代码相似,那么也认为 $a$ 和 $c$ 的代码相似,而只有当上报的学生 $a$, $b$ 已经被记录为相似,才会被视作抄袭,如果 $a$ 和 $b$ 互相抄袭,$b$ 和 $c$ 互相抄袭,那么也认为 $a$ 和 $c$ 互相抄袭。
如果几个人互相抄袭,我们称这几个人为 $作弊团伙$,现在已经知道了每条被上传的数据,而你想知道我们学校有多少个其他的 $作弊团伙$ ( 其他表示不包括自己的 $作弊团伙$,视个人情况判断是否将答案减 $1$ )
输入格式
第一行输入两个数字 $n$ 和 $m$ $(2 \leq n, m \leq 1e6)$,表示 $gzu$ 的人数和上传记录的条数
接下来的 $m$ 行每行输入两个数字 $a$, $b$ $(1 \leq a, b \leq n)$ 表示发现 $a$ 和 $b$ 互相抄袭
输出格式
输出一个数字,表示 $作弊团伙$ 的个数
输入样例
6 7
1 2
1 3
2 3
4 5
4 5
5 6
5 6
输出样例
2
胜利大逃亡
题目描述
Ignatius 再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)……
这次魔王汲取了上次的教训,把 Ignatius 关在一个 $n \times m$ 的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方。
刚开始 Ignatius 被关在 $(sx, sy)$ 的位置,离开地牢的门在 $(ex, ey)$ 的位置。
Ignatius 每分钟只能从一个坐标走到相邻四个坐标中的其中一个。
魔王每 $t$ 分钟回地牢视察一次,若发现 Ignatius 不在原位置便把他拎回去。
经过若干次的尝试,Ignatius 已画出整个地牢的地图。
现在请你帮他计算能否再次成功逃亡。
只要在魔王下次视察之前走到出口就算离开地牢,如果魔王回来的时候刚好走到出口或还未到出口都算逃亡失败。
输入格式
每组测试数据的第一行有三个整数 $n$, $m$, $t$ $(2 \leq n, m \leq 20, t > 0)$。
接下来的 $n$ 行 $m$ 列为地牢的地图,其中包括:
-
$.$ 代表路
-
$*$ 代表墙
-
$@$ 代表 Ignatius 的起始位置
-
$^$ 代表地牢的出口
-
$A$-$J$ 代表带锁的门,对应的钥匙分别为 $a$-$j$
-
$a$-$j$ 代表钥匙,对应的门分别为 $A$-$J$
每组测试数据之间有一个空行。
输出格式
针对每组测试数据,如果可以成功逃亡,请输出需要多少分钟才能离开,如果不能则输出 $-1$。
输入样例
4 5 17
@A.B.
a*.*.
*..*^
c..b*
4 5 16
@A.B.
a*.*.
*..*^
c..b*
输出样例
16
-1
双层汉诺塔
题目描述
3 根擎天巨柱,其中最左边的 $1$ 号柱子上有 $2 \times n$ 个圆盘,而圆盘刚好从上到下依次增大且每种尺寸的圆盘有两块,也就是说:一共有 $n$ 种圆盘,上面的圆盘为黑色,下面的圆盘为白色(交错放置)。
-
你每次可以移动每根柱子最上方的一个圆盘,到其他柱子上
-
大的圆盘不能放在小的圆盘上面
-
你需要将 $1$ 号柱子上的圆盘全部移动到 $3$ 号柱子上,并使得 $3$ 号柱上的圆盘黑白顺序和原来 $1$ 号柱上的圆盘黑白顺序相同
输入格式
多组输入,每行输入 $1$ 个整数 $n$ ($1 \leq n \leq 1e6$)
输出格式
每行输出解开该层数圆盘问题最少需要移动圆盘的次数,结果对 $998244353$ 取余
输入样例
1
输出样例
3