天梯赛选拔_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个人出列……以此类推不断循环,直至最后一人出列。请编写程序按顺序输出出列人的编号。
pic.jpg

输入格式:

输入为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
posted @ 2023-04-21 14:42  回忆、少年  阅读(339)  评论(0编辑  收藏  举报