历年吉林大学保研上机真题
2025吉林大学保研上机真题
2024吉林大学保研上机真题
2023吉林大学保研上机真题
在线测评链接:https://pgcode.cn/school?classification=1
字符串的反码
题目描述
一个二进制数,将其每一位取反,称之为这个数的反码。
下面我们定义一个字符的反码。
如果这是一个小写字符,则它和字符 ′ a ′ 'a' ′a′ 的距离与它的反码和字符 ′ z ′ 'z' ′z′ 的距离相同;如果是一个大写字符,则它和字符 ′ A ′ 'A' ′A′ 的距离与它的反码和字符 ′ Z ′ 'Z' ′Z′ 的距离相同;如果不是上面两种情况,它的反码就是它自身。
举几个例子, ′ a ′ 'a' ′a′ 的反码是 ′ z ′ 'z' ′z′; ′ c ′ 'c' ′c′ 的反码是 ′ x ′ 'x' ′x′; ′ W ′ 'W' ′W′ 的反码是 ′ D ′ 'D' ′D′; ′ 1 ′ '1' ′1′ 的反码还是 ′ 1 ′ '1' ′1′;$‘$’$ 的反码还是 $‘$’$。
一个字符串的反码定义为其所有字符的反码。
我们的任务就是计算出给定字符串的反码。
输入格式
输入每行都是一个字符串,字符串长度不超过 80 80 80 个字符。
如果输入只有 ′ ! ′ '!' ′!′,表示输入结束,不需要处理。
输出格式
对于输入的每个字符串,输出其反码,每个数据占一行。
输入样例
Hello
JLU-CCST-2011
!
输出样例
Svool
QOF-XXHG-2011
题目来源
2011
数字之和
题目描述
对于给定的正整数 n n n,计算其十进制形式下所有位置数字之和,并计算其平方的各位数字之和。
输入格式
每行输入数据包括一个正整数 n n n ( 0 < n < 40000 0 < n < 40000 0<n<40000),如果 n = 0 n = 0 n=0 表示输入结束,并不用计算。
输出格式
对于每个输入数据,计算其各位数字之和,以及其平方值的数字之和,输出在一行中,之间用一个空格分隔,但行末不要有空格。
输入样例
4
12
97
39999
0
输出样例
4 7
3 9
16 22
39 36
题目来源
2011
搬水果
题目描述
在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。
每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。
当然经过 n − 1 n-1 n−1 次合并之后,就变成一堆了。
小明在合并水果时总共消耗的体力等于每次合并所耗体力之和。
假定每个水果重量都为 1 1 1,并且已知水果的种类数和每种水果的数目,你的任务是设计出合并的次序方案,使小明耗费的体力最少,并输出这个最小的体力耗费。
例如有 3 3 3 种水果,数目依次为 1 1 1, 2 2 2, 9 9 9。
可以先将 1 1 1, 2 2 2 堆合并,新堆数目为 3 3 3,耗费体力为 3 3 3。
然后将新堆与原先的第三堆合并得到新的堆,耗费体力为 12 12 12。
所以小明总共耗费体力 = 3 + 12 = 15 =3+12=15 =3+12=15,可以证明 15 15 15 为最小的体力耗费值。
输入格式
每组数据输入包括两行,第一行是一个整数 n n n ( 1 ≤ n ≤ 10000 ) (1 \leq n \leq 10000) (1≤n≤10000),表示水果的种类数,如果 n n n 等于 0 0 0 表示输入结束,且不用处理。
第二行包含 n n n 个整数,用空格分隔,第 i i i 个整数 ( 1 ≤ a i ≤ 1000 ) (1 \leq a_i \leq 1000) (1≤ai≤1000) 是第 i i i 种水果的数目。
输出格式
对于每组输入,输出一个整数并换行,这个值也就是最小的体力耗费值。
输入数据保证这个值小于 2 31 2^{31} 231。
输入样例
3
9 1 2
0
输出样例
15
题目来源
2011
堆栈的使用
题目描述
堆栈是一种基本的数据结构。
堆栈具有两种基本操作方式, p u s h push push 和 p o p pop pop。
P u s h Push Push 一个值会将其压入栈顶,而 p o p pop pop 则会将栈顶的值弹出。
现在我们就来验证一下堆栈的使用。
输入格式
对于每组测试数据,第一行是一个正整数 n n n, 0 < n < = 10000 0 < n <= 10000 0<n<=10000( n = 0 n = 0 n=0 结束)。
而后 n n n 行,每行的第一个字符可能是 ′ P ′ 'P' ′P′ 或者 ′ O ′ 'O' ′O′ 或者 ′ A ′ 'A' ′A′;如果是 ′ P ′ 'P' ′P′,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是 ′ O ′ 'O' ′O′,表示将栈顶的值 p o p pop pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是 ′ A ′ 'A' ′A′,表示询问当前栈顶的值,如果当时栈为空,则输出 ′ E ′ 'E' ′E′。
堆栈开始为空。
输出格式
对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的 ′ A ′ 'A' ′A′ 操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出 ′ E ′ 'E' ′E′。
当每组测试数据完成后,输出一个空行。
输入样例
3
A
P 5
A
4
P 3
P 6
O
A
0
输出样例
E
5
3
题目来源
2011