天梯赛选拔_2023_第四场
7-1 聪明一点的拖长音
题目描述
输入一行字符,去掉空格,在每个单词最后一个字母处加一个-。
输入格式:
输入一行字符,中间有若干空格,字符数不超过100个。
输出格式:
输出这行的所有英文字母,在每个单词末尾加一个-。注:单词是指由大写或小写英文字母组成的一个词。
输入样例:
I am a girl
I am a girl !!!
Great
输出样例:
在这里给出相应的输出。例如:
I-am-a-girl-
I-am-a-girl-
Great-
7-2 售货机商品的总额
题目描述:
有一个售货柜员机,内有多种商品供人购买(商品种类不超过100个),每种商品有名称,商品数量和商品单价。编程输入售货机内n种商品信息,输出每种商品总价和所有商品累加总额。
输入格式:
第一行输入商品种类个数n,后面依次输入商品的名称,数量,单价。
输出格式:
输出每种商品的名称、数量、单价和总价,最后一行输出所有商品累加总额。
输入样例:
4
bread 3 5.2
milk 5 3.5
cookie 30 1.5
cake 25 5.2
输出样例:
bread 3 5.2 15.60
milk 5 3.5 17.50
cookie 30 1.5 45.00
cake 25 5.2 130.00
sum=208.10
7-3 约瑟夫问题变形
题目描述:
编号为1…N的N个小朋友玩游戏,他们按编号顺时针围成一圈,按顺时针次序报数,从第1个人报到第M个人出列;然后再从下个人开始报到第M+1个人出列;再从下一个人开始报到第M+2个人出列……以此类推不断循环,直至最后一人出列。请编写程序按顺序输出出列人的编号。
输入格式:
输入为2个整数,分别表示N、M(1≤N,M,K≤10000)。
输出格式:
输出为一行整数,为出列人的编号。每个整数后一个空格。
输入样例1:
6 3
输出样例1:
3 1 2 6 4 5
输入样例2:
10 2
输出样例2:
2 5 9 6 4 8 7 3 1 10
输入样例3:
5 1
输出样例3:
1 3 2 5 4
7-4 单链表基本操作
题目描述:
请编写程序实现单链表插入、删除结点等基本算法。给定一个单链表和一系列插入、删除结点的操作序列,输出实施上述操作后的链表。单链表数据域值为整数。
输入格式:
输入第1行为1个正整数n,表示当前单链表长度;第2行为n个空格间隔的整数,为该链表n个元素的数据域值。第3行为1个正整数m,表示对该链表施加的操作数量;接下来m行,每行表示一个操作,为2个或3个整数,格式为0 k d或1 k。0 k d表示在链表第k个结点后插入一个数据域值为d的结点,若k=0则表示表头插入。1 k表示删除链表中第k个结点,此时k不能为0。注:操作序列中若含有不合法的操作(如在长度为5的链表中删除第8个结点、删除第0个结点等),则忽略该操作。n和m不超过100000。
输出格式:
输出为一行整数,表示实施上述m个操作后的链表,每个整数后一个空格。输入数据保证结果链表不空。
输入样例:
5
1 2 3 4 5
5
0 2 8
0 9 6
0 0 7
1 0
1 6
输出样例:
7 1 2 8 3 5
7-5 工作分配问题
题目描述:
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。
输入格式:
输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。
输出格式:
将计算出的最小总费用输出到屏幕。
输入样例:
在这里给出一组输入。例如:
3
10 2 3
2 3 4
3 4 5
输出样例:
在这里给出相应的输出。例如:
9
7-6 简版田忌赛马
题目描述:
这是一个简版田忌赛马问题,具体如下:
田忌与齐王赛马,双方各有n匹马参赛,每场比赛赌注为200两黄金,现已知齐王与田忌的每匹马的速度,并且齐王肯定是按马的速度从快到慢出场,请写一个程序帮助田忌计算他最多赢多少两黄金(若输,则用负数表示)。
简单起见,保证2n匹马的速度均不相同。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。
每组测试数据输入3行,第一行是n(1≤n≤100) ,表示双方参赛马的数量,第2行n个正整数,表示田忌的马的速度,第3行n个正整数,表示齐王的马的速度。
输出格式:
对于每组测试数据,输出一行,包含一个整数,表示田忌最多赢多少两黄金。
输入样例:
4
3
92 83 71
95 87 74
2
20 25
21 12
10
1 2 3 24 5 6 7 8 9 12
11 13 15 19 22 34 14 21 44 99
4
10 15 16 37
14 20 30 40
输出样例:
200
400
-1200
0
7-7 简单密码构建
题目描述:
近期校园“电信诈骗案”的一桩连着一桩的发生,让FJ对自己的银行账户提了个心,为了防止这类事情发生在自己身上,决定给银行卡设计一个密码,可是FJ却遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不是很安全;如果设置不好记的密码,又担心自己会忘记;如果写在纸上呢?又怕纸被人发现或者弄丢……
在一番绞尽脑汁之后,FJ自己设计了一个程序,这个程序的任务就是将一串拼音字母转换为6位数字(密码)。
FJ可以使用任何好记的拼音串(比如名字,钟佳闱,就写:zhongjiawei)作为输入,最后输出6位数字。
程序变换过程如下: 第一步:把拼音串6个一组折叠起来,比如zhongjiawei则变为: zhongj iawei
第二步:把所有垂直在同一位置的字符的ascll码值相加,得出6个数字,如上面的例子,z(122)与i(105)、h(104)与a(97)、o(111)与w(119)、n(110)与e(101)、g(103)与i(105)分别相加,j(106)没有字母与之相对,保持不变,则得出的6个数为:
227 201 230 211 208 106
第三步:对每个数字处理,就是把每个位的数字相加,得出的如果不是一个一位数,那么继续处理,直到变成一位。 例如:227 => 2+2+7=11 => 1+1=2
经过以上三步之后,得到的密码为:235417。这就是FJ最后的银行卡密码
输入格式:
第一行输入一个T(0 < T < 100),表示测试数据组数 每组数据占一行,代表给定的拼音串,长度不超过40,保证都是小写英文。
输出格式:
最后的银行卡密码,一组数据占一行。
输入样例:
2
zhongjiawei
haohaoxuexi
输出样例:
235417
875843
7-8 炮兵轰炸
题目描述:
炮兵接到命令对指定区域进行炮击。假设敌方士兵分布在一个M×N格的二维平面上,每名士兵占据一格。向该平面的任意位置发射炮弹,炮弹的杀伤范围如下示意:
O
OXO
O
其中,X为炮弹落点中心,O为紧靠中心的四个有杀伤力的格子范围。若士兵被炮弹命中(位于X格),一击毙命,若仅被杀伤(位于O格),则损失一半的生命力。也就是说,一次命中或者两次杀伤均可消灭敌方士兵。现在给出士兵的分布情况以及连续k发炮弹的落点,给出每炮消灭的士兵数。最后给出被消灭的士兵总数、受伤的士兵总数。
输入格式:
第一行为两个不超过20的正整数M和N,中间空一格,表示二维平面有M行、N列。
接下来M行,每行有N个0或者#字符,其中#表示所在格子有士兵。
接下来一行,包含一个不超过100的正整数k,表示发射炮弹的数量。
最后k行,每行包括一发炮弹的整数坐标x和y(0≤x<M,0≤y<N),之间用一个空格间隔。
输出格式:
对应输入的k发炮弹,输出k行,第i行即第i发炮弹消灭的士兵数。
然后另起一行输出总的消灭士兵数、受伤士兵数。两者用空格隔开。
输入样例:
5 5
00###
0##00
00#00
##000
#0#0#
3
0 2
1 1
1 2
输出样例:
1
2
0
3 2