2023华东师范大学计算机复试上机真题
2022华东师范大学计算机复试上机真题
2021华东师范大学计算机复试上机真题
2023华东师范大学计算机复试机试真题
2022华东师范大学计算机复试机试真题
2021华东师范大学计算机复试机试真题
在线评测:传送门:pgcode.cn
骑车路线
题目描述
Tomislav 最近发现自己的身材完全走样了,她走楼梯都变得很累。
一天早上她起来以后,她决定恢复姣好的身材。
她最喜欢的运动是骑自行车,因此她决定在本地的小山上做一次旅行。
她骑自行车的路线可以描述为 N 个数字的数列,每个数字表示每一段路地海拔高度。
Tomislav 最感兴趣的是最长的高度一直上升的子序列,她称这一段路为爬坡,Tomislav 只想考虑这段爬坡的高度差(即开始和最后的数字的差距),而不是什么路程长度。
一段爬坡路被定义为至少两个连续的上升数列。
例如,我们考虑如下路线数列 12 3 5 7 10 6 1 11,这里有两个爬坡,第一个爬坡(3 5 7 10)的高度差是 7,第二个爬坡的高度差是 10(1 11)。
帮助 Tomislav 计算高度差最大的爬坡的高度差。
输入格式
多组测试数据输入。
第一行是一个正整数 N (1<= N <= 1000), 描述了路线数列。
第二行有 N 个正整数,每个正整数 Pi (1<= Pi <= 1000)表示相应路段的海拔高度。
输出格式
所有爬坡中的最大高度差,如果路线数列里面没有爬坡,就输出 0。
输入样例
5
1 2 1 4 6
6
10 8 8 6 4 3
输出样例
5
0
统计卡牌的值
题目描述
输入一个数字 n,然后输入 n 个字符串。
每个字符串包含 13 个字符,有 2,3,4,5,6,7,8,9,10,J,Q,K,A。
其中 J 算 1 分,Q 算 2 分,K 算 3 分,A 算 4 分。
输出这些字符加在一起的最终分数
输入样例
3
2345
A4J
AA123Q2Q
输出样例
14
9
20
求 30 的倍数
题目描述
就是输入一个数,比如 201,让数字随意组合,是否能组合出 30 的倍数.
如果能够组合成 30 的倍数,就输出最大的倍数,不能就输出-1。
例如输入 201 你可以随意组合成。
201,210,012,021,102,120 等数字。
其中 120,210 都是 30 的倍数,由于要找最大的,所以答案是 210。
输入样例
201
输出样例
210
字符串查询
题目描述
给你单词 S 和 Q 个询问。
每次询问,你会得到正整数 A,B,C 和 D。
我们令单词 X 由 S 的第 A 到 B 个字母组成,单词 Y 由 S 的第 C 到 D 个字母组成。
你需要回答,是否能够重新排列单词 Y 中的字母,得到单词 X。
输入格式
第一行一个单词 S(1<=|S|<=50000),仅由小写字母组成。
第二行一个正整数 Q(Q<=Q<=50000).
接下来 Q 行,每行四个整数 A,B,C,D(1<=A<=B<=|S|,1<=C<=D<=|S|)
输出格式
每次询问,如果能,输出“DA”,否则输出“NE”。
输入样例
kileanimal
2
2 2 7 7
1 4 6 7
输出样例
DA
NE
街灯
题目描述
现在是基督降临节,在长为 N 米的街道上有 M 个街灯。
每个灯照亮了左边 K 米,右边 K 米。
也就是说,在 X 米处的灯,能照亮从 X-K 到 X+K(含)。
当然,街道某处可能被多个灯照亮。
所有灯位于不同的位置。
问题在于有可能这些灯没法照亮整条街道。
你的任务是,确定最少还要加多少灯,使得整条街道都被照亮。
输入格式
多组测试数据输入。
第一行一个整数 N(1<=N<=1000)。
第二行一个整数 M(1<=M<=N)。
第三行一个整数 K(0<=K<=N)。
接下来 M 行,每行一个数,保证这些数按升序排列。
他们的位置都是互异的。
输出格式
你需要输出所求的数字。
输入样例
5
2
2
1
5
输出样例
0
差分计数
给定 n 个整数 a1,a2,…,an 和一个整数 x。
请你计算,一共有多少个有序对 (i,j) 满足 ai−aj=x。
注意:
- i 和 j 可以相等。
- ((1,2) 和 (2,1) 应视为两个不同的有序对。
输入格式
第一行包含两个整数 n,x。
第二行包含 nn 个整数 a1,a2,…,an。
输出格式
一个整数,表示满足条件的有序对的数量。
数据范围
1≤n≤106
−106≤x,ai≤106
输入样例
5 1
1 1 5 4 2
输出样例
3
整数排序
题目描述
输入若干个 int 类型整数,将整数按照位数由大到小排序,如果位数相同,则按照整数本身从小到大排序。
例如:
输入:10 -3 1 23 89 100 9 -123
输出:-123 100 10 23 89 -3 1 9
输入的整数个数最多不超过 106 个。
输入格式
在一行中输入若干个整数,整数之间用一个空格分隔。
输出格式
在一行中输出排序好的整数,整数之间用一个空格分隔。
输入样例
10 -3 1 23 89 100 9 -123
输出样例
-123 100 10 23 89 -3 1 9
乘法
题目描述
给出一个长度为n的数列和一个长度为m的数列,可以构造得到一个 n x m的矩阵C。
其中Cij.= Aix Bj
给出整数 K,你需要求出C中的第 k 大的数的值。
输入格式
第-行输入三个整数n,m,K(1≤n,m≤ 105,1≤K≤n x m)。
第二行输入n个空格隔开的整数A1,A2,…, An,(-106< Ai < 106)。
第三行输入m个空格隔开的整数B1,B2…, Bn(-106 < B¡< 106)。
输出格式
输出一行一 个整数,表示矩阵中的第K大的数的值。
输入样例
3 3 3
2 3 4
4 5 6
输出样例
18
达到回文数
题目描述
整数 n (1≤n≤10000),从右往左读得到它的反数 m,判断 n 与 m 的和 s 是否是一个回文数。
回文数是从左往右读和从右往左读结果一样的整数。
若 s 不是一个回文数,则继续判断 s 和它的反数的和是否是一个回文数。
重复这一过程,直至达到和为一个回文数为止。
例如,n 为 195,则 m 为 591,s 为 786;再计算 786+687=1473; 1473+3741=5214; 5214+4125=9339。
在达到回文数 9339 之前总共进行了 4 次加法操作。
对于 n,要求计算出达到回文数之前所进行的加法操作的最小次数和最终达到的回文数。
n 本身不是一个回文数。
保证对于 n 来说一定能在 1000 次加法操作之前达到回文数,并且在计算过程中的和一定小于 2000000000。
输入格式
由一个整数 n 组成的一行信息。
输出格式
一行信息,用一个空格分隔的最小加法次数及最终达到的回文数。
输入样例
195
输出样例
4 9339
位运算
题目描述
给定一个 int 型整数 x ,将 x 的二进制表示中第 i 位和第 j 位的值互换。
0 ≤ i , j ≤ 31
注意: x 的二进制表示的最右边为第 0 位。
输入格式
在一行中输入三个整数,x , i , j, 整数之间用一个空格分隔。
输出格式
在一行中输出互换后的结果
输入样例
38 2 4
输出样例
50
Minimum_Sum
题目描述
输入样例
5
1 2 3 4 5
1
1 5
输出样例
6
表面积
题目描述
在 n 个圆柱体中挑选 k 个,按照半径从大到小圆心对齐叠在一起放在地面上(最大的一个在最下面),计算可能的最大可视表面积。
输入格式
第 1 行:整数 n(1<=n<=1000)和 k(1<=k<=n),一个空格分隔。
第 n+1 行:每个圆柱体的半径 Rcm 与高度 Hcm(1<=R, H<=10^6),一个空格分隔。
输出格式
一行中输出 x。
表示可能的最大表面积为 x 乘以圆周率的 cm^2 。
输入样例
2 1
100 20
200 10
输出样例
44000
上古计算机
题目描述
Smith 有一台古老的计算机,这台计算机使用一套非常特殊的标记编程语言。
现在我们仅考虑这一语言的一个小的子集,该子集可以实现一个简单计算器。
这台机器一共有 4 个无差别的寄存器,分别为 AX, BX, CX, DX,在指令中他们可以互相替代,下面的表格列出了所有支持的指令。
中文名 | 格式 | 解释 |
---|---|---|
读操作指令 | IN AX, number | 读数据存储在 AX 中,AX=number |
传送指令 | MOV AX, BX | AX=BX |
加法指令 | ADD AX, BX | AX=AX+BX |
减法指令 | SUB AX, BX | AX=AX-BX |
乘法指令 | MUL AX, BX | AX=AX * BX |
除法指令 | DIV AX, BX | AX=AX/BX(整除) |
写操作指令 | OUT AX | 输出 AX 的值 |
例如:以下代码实现表达式 (2+3*5)/6 的计算并输出计算结果。
IN AX,3
IN BX,5
MUL AX,BX
IN CX,2
ADD CX,AX
IN BX,6
DIV CX,BX
OUT CX
输入用这种特殊标记编程语言编写的一段代码,请编写一个翻译器,对代码进行翻译,输出最后运行结果。
输入格式
输入代码片段。
注意:读的数据均为 int 型整数。
所有被计算的数值(包括中间值)均保证在 int 范围内。
输入保证不包含任何多余的空白字符,在开始执行前,所有寄存器的值可以视为已经清零。
对于 30% 的数据指令数 <= 50;
对于 80% 的数据指令数 <= 100 000 ;
对于 100% 的数据指令数 <= 500 000 ;
输出格式
对于每个 OUT 指令,输出一行表示结果。
输入样例
IN AX,3
IN BX,5
MUL AX,BX
IN CX,2
ADD CX,AX
IN BX,6
DIV CX,BX
OUT CX
输出样例
2
数字排序
题目描述
给 n 个字符串,这些字符串表示数字,对数字按从小到大排序输出(小数点前最多 5 位,小数点后最多 9 位)
输入格式
第一行:一个正整数 n,后面 n 行,每行一个字符串。
输出格式
按序输出 n 个字符串。
输入样例
4
28.334
-14.3456
5.9
1256
输出样例
-14.3456
5.9
28.334
1256
安全驾驶
题目描述
在一单行直线测试车道中有 n+1 辆自动驾驶的小车同向行驶。
初始时每辆小车有各自的出发位置和恒定速度。
同时开始出发后,若后面的小车追上前面的小车,为了安全则必须降速到与前车相同的速度。
最后所有小车都需要到达目的地。
最后一辆小车不想中途降速,希望全程匀速行驶,请找出最后一辆小车在满足条件(全程匀速且保证安全)的情况下最大可能的速度。
输入格式
第一行包含一个正整数 d km( 1<= d <= 10^9)表示最后一辆车目前离目的地的位置。
第二行包含一个正整数 n(1<= n <= 1000)表示除最后一辆车外小车的数量。
第 i+2 行包含两个以空格分隔的正整数,表示第 i 辆小车在最后一辆小车前方的距离 k km,以及他的速度 v km/h,保证所有小车的出发位置各不相同。
输出格式
一行中输出最后一辆车的最大的可能速度(单位为 km/h),保留 6 位小数。
输入样例
2525
1
2400 5
输出样例
101.000000
罗马数字
题目描述
罗马数字是古罗马使用的记数系统,现今仍很常见。
罗马数字有七个基本符号:I, V, X, L, C, D, M。
罗马数字 | I | V | X | L | C | D | M |
---|---|---|---|---|---|---|---|
对应的阿拉伯数字 | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
需要注意的是罗马数字与十进位数字的意义不同,它没有表示零的数字,与进位制无关。按照下述的规则可以表示任意正整数。
“标准”形式
重复次数一个罗马数字重复几次,就表示这个数的几倍。
左加右减
- 在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。
- 在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字。
- 左减的数字有限制,仅限于 I, X, C。例如 45 表示 XLV,而不是 VL。
- 左减时不可跨越一个位值。例如,99 是 XCIX ([100-10] + [10-1]),而不是 IC ([100 - 1])。等同于阿拉伯数字每位数字分别表示。
- 左减数字必须为一位,比如 8 是 VIII,而不用 IIX。
- 罗马数字 V, L, D 中的任何一个放在较大的罗马数字右边只能使用一个。
- 右加连续相同数字不超过三位,比如 14 是 XIV,而不是 XIII。
现在给出一个阿拉伯数字表示的十进制正整数,输出其对应的罗马数字。
输入格式
一行十进制整数
输出格式
一行字符串,表示对应的罗马数字
输入样例
3
输出样例
III
中位数
题目描述
给定 n 个数 A1,A2,⋯,An (保证 n 为奇数)和 s,你可以任意修改其中的某些数,但每次修改会有代价。
代价定义为:若将 x 修改为 y,则此次代价为|x–y|。
求最少花费多少代价使得修改后所有数的中位数为 s。
A1,A2,⋯,An 的中位数定义为:将 A_i 从小到大排序后的第 n/2+ 1 项(n 为奇数)。
提示
对于 20% 数据:n≤20。
对于 40% 数据:n≤1000。
另外对于 30% 数据:满足对于任意 i∈[1,n],Ai=0。
对于所有数据,满足 1≤n≤10^5 且 n 为奇数,0≤s,Ai≤10^8,且 n 个数中有超过 n/2 个元素为 0。
输入格式
第一行两个整数 n,s。
第二行 n 个整数,表示 A1,A2,⋯,An
输出格式
输出一个整数,表示使序列的中位数变为 s 的最小代价。
输入样例
5 3
0 0 0 3 5
输出样例
3
数字猜想
题目描述
输入一个正整数 x,如果为奇数:先乘 3 再加 1。
如果为偶数:除 2。
直到 x 变为 1,计算操作了多少次
输入样例
10
输出样例
6
最小字符串
题目描述
给定字符串 S(全为大写字母),对任意字符,可扩展也可以不扩展,求给定字符串对应的字典序最小字符串
扩展:如 A 可以扩展为 AA,也可以不扩展,为 A
例:
输入 AC,输出 AAC
输入 CA,输出 CA
输入 AAB,输出 AAAAB
输入样例
AAB
输出样例
AAAAB
最长美丽子串
题目描述
给定长度为 n 的字符串 S,定义其子字符串为 S 中连续的字符所组成的字符串。
若个字符串的每一个字符都独一无二,那么我们称这样的字符串是美丽的。
例如 abc 是美丽的,但是 abb 不是美丽的。
请输出 S 的最长美丽子串的长度。
数据规定
30% :S 长度 [1,100]
60% :S 长度 [1,10000]
100% :S 长度 [1,100000]
输入格式
一行一个字符串 S。
输出格式
一行一个整数,表示答案。
输入样例
abcddbcd
输出样例
4
矩形个数
题目描述
在一个由 0、1 元素构成矩阵中,统计至少含有 k 个 1 的矩形的个数(矩形边界平行于矩阵边界)。
注意:单个元素也算是一个矩形。
输入格式
第一行,有四个空格分隔的整数,r,c,n,k ( 1≤r,c,n≤500,1≤k≤n ) 分别表示矩阵的行数,列数,矩阵中 1 的个数,和题意中给出的 k。
接下来 n 行,每行两个空格分隔的整数 x 和 y,表示每个 1 所在的位置 ( 1≤xi≤r,1≤yi≤c)。
输出格式
输出 1 行 1 个数字,表示矩形的个数。
输入样例
5 5 4 2
5 4
5 5
1 5
2 4
输出样例
41
整数分解
题目描述
给一个正整数 n,求将其分解为若干个素数之和的方案数。(1<=n<=1000)
比如 7,有三种方案:
(1)7
(2)5+2
(3)3+2+2
输入样例
7
输出样例
3
子序列
输入样例
3 6
1 2
输出样例
2
钥匙
题目描述
经济危机席卷全球,L 国也收到冲击,大量人员失业。
然而,作为 L 国的风云人物,X 找到了自己的新工作。
从下周开始,X 将成为一个酒店的助理锁匠,当然,他得先向部门领导展示他的开锁能力。
领导给了 X 一串钥匙,这串钥匙串在一个大圆环上,每把钥匙有一个编号(1…N)。
然后蒙上 X 的眼睛并把他带到一个圆形的大房间中。
在这个房间中有 N 个上锁的门,用 1…N 表示,这串 N 把钥匙每一把正好打开一扇门(钥匙编号和门编号一致就可以打开)。
X 的工作就是打开每扇门。
他因为蒙着眼睛,不过可以沿着房间的墙壁移动,不能改变方向,直到他摸着一扇门,然后他会尝试用第一把钥匙(最左边)来打开门,如果钥匙不能打开门,他会将钥匙移到另外一侧(最右边),重复这样直到找到正确的钥匙,当他把所有门打开就结束任务。
不过 X 不知道的是,领导并不是测试他开锁能力,而是测试他的耐心,所以领导故意把 X 带到圆形房间,这样 X 每开一扇门后,领导就会在后面悄悄把门再次锁上,这样以来,X 打开最后一扇门后又回到第一扇门然后一直重复下去。
不过 X 是一个勤奋和耐心的人,他一直毫无怨言的做着这件事,不说任何抱怨的话,只是在每开一扇门他会默默的统计自己已经错误了多少次,不过慢慢时间太久他的计算能力不足,需要你来帮助他计算错误的次数。
任务:给定数字 k,回答当 X 打开第 k 扇门时,一共错误了多少次?
输入格式
第一行是 2 个整数 N,K
接下来 N 行,每行包含一个整数 Vi,表示钥匙串从第一把(左侧)到最后一把,第 i 把钥匙的编号。
输出格式
一个整数,回答第 k 次打开一扇门,已经错误的次数。
输入样例
4 6
4
2
1
3
输出样例
13
Weights II
题目描述
Merchants measured many commodities using weights and a two-pan balance. If you are using a limited set of weights, however, you can only measure certain quantities accurately. For example, suppose that you have only two weights: a 1-ounce weight and a 3-ounce weight. With these you can easily measure out 4 ounces, as shown in Figure1.
It is somewhat more interesting to discover that you can also measure out 2 ounces by shifting the 1-ounce weight to the other side, as shown in Figure2.
Write a program to determine whether it is possible to measure out the desired target amount with a given set of weights.
输入格式
First line contains a single integer t(t<1000)
The first line of each test case contains an integers n(1≤n≤100) – thesize of the given set of weights.
The second line of each test case contains nintegersw1,w2,⋯,wn(1≤wi≤104)
The third line of each test case contains an integerq(1≤q≤104)– thenumber of queries.
The fourth line of each test cases contains distinct integers – the desired target amounts.
It’s guaranteed that the sum of all does not exceed 10^4.
输出格式
For each test case, output a binary string ,s s.t. si=1 if it is possible measure out the desired target amount Wi with the given set of weights and si=0 otherwise.
输入样例
3
2
1 3
6
1 2 3 4 5 6
2
1 4
6
1 2 3 4 5 6
3
3 5 9
18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
输出样例
111100
101110
111111111011010010
平衡三进制 II
#### 输入样例
8 1
输出样例
102