一、实操题
1、排序
题目描述:
输入三个正整数,将三个正整数按从小到大排序输出。
输入描述:
输入三个正整数(0<正整数<1000),且正整数之间以一个空格分隔。
输出描述:
将三个正整数按照从小到大排序输出,且正整数之间以一个空格分隔。
样例输入:
15 8 10
样例输出:
8 10 15
参考答案:br />输入三个正整数,将三个正整数按从小到大排序输出。
解析:【喵呜刷题小喵解析】
本题要求将输入的三个正整数按从小到大的顺序排序并输出。由于题目中限制了正整数的范围在0到1000之间,因此我们可以直接比较这三个数的大小,然后按照从小到大的顺序输出。
具体实现步骤如下:
1. 读取输入的三个正整数,分别记为a、b、c。
2. 比较a、b、c的大小,将最小的数记为min,第二小的数记为second_min,最大的数记为max。
3. 输出min、second_min、max,即按从小到大的顺序输出这三个数。
由于题目中没有限制输入的顺序,因此我们需要考虑所有可能的输入顺序。例如,如果输入的三个数为a、b、c,则可能存在以下情况:
* a < b < c
* a < c < b
* b < a < c
* b < c < a
* c < a < b
* c < b < a
无论输入的顺序如何,我们都可以通过比较这三个数的大小,找到最小的数、第二小的数和最大的数,并按照从小到大的顺序输出。
2、平均值
提示信息:
歌唱比赛中有10名评委。评分规则是:每名评委给出一个0~100之间的分数,然后从10名评委所评分数中,去掉一个最高分,再去掉一个最低分,对剩余分数取平均值作为选手的最终得分。
题目描述:
给定10个评委的评分,然后去掉一个最高分,再去掉一个最低分后,求出剩余分数的平均值,作为选手最终得分。
输入描述:
输入10个正整数(O≤正整数≤100)表示10位评委评分,正整数之间以一个空格分隔。
输出描述:
去掉一个最高分和一个最低分后,求出剩余分数的平均值,作为选手最终得分,并将其输出。 (计算结果保留全部小数位数)
样例输入:
80 85 83 89 98 75 80 90 78 65
样例输出:
82.5
参考答案:```pythonscores = list(map(int, input().split()))max_score = max(scores)min_score = min(scores)valid_scores = [score for score in scores if score != max_score and score != min_score]average_score = sum(valid_scores) / len(valid_scores)print(f"average_score:.2f")```
解析:【喵呜刷题小喵解析】:
首先,我们从输入中读取10个评委的评分,并将其存储在一个列表中。然后,我们找出列表中的最大值和最小值,即最高分和最低分。
接着,我们创建一个新的列表,只包含有效评分,即去掉最高分和最低分的评分。
最后,我们计算有效评分的平均值,并将其输出。注意,在计算平均值时,我们使用`len(valid_scores)`来计算剩余评分的数量,并使用`{average_score:.2f}`来确保输出结果保留两位小数。
3、换算
提示信息:
一分钟有60秒,一小时有60分钟。
题目描述:
将秒数转换为与其等价的小时数、分钟数、秒数的表现形式。
小时数、分钟数、秒数的数字之间以英文冒号(:)分隔,且数字小于10的,需要在数字前补0。
例如:500秒等同于8分钟20秒,表现形式为:00:08:20;7259秒等同于2小时0分钟59秒,表现形式为:02:00:59。
输入描述:
输入一个正整数N(N<86400)作为秒数。
输出描述:
输出与其对应的小时数、分钟数、秒数,数字之间以英文冒号分隔。(数字小于10的,需要在数字前补0)
样例输入:
7259
样例输出:
02:00:59
参考答案:将秒数转换为与其等价的小时数、分钟数、秒数的表现形式,输入一个正整数N,输出与其对应的小时数、分钟数、秒数,数字之间以英文冒号分隔,数字小于10的,需要在数字前补0。
解析:【喵呜刷题小喵解析】:
对于这个问题,我们需要将输入的秒数N转换为小时、分钟和秒的形式,并且以英文冒号分隔。
首先,我们可以计算小时数,使用公式:小时数 = N // 3600。
然后,我们可以计算剩余的秒数,使用公式:剩余的秒数 = N % 3600。
接着,我们可以将剩余的秒数转换为分钟和秒的形式,使用公式:分钟数 = 剩余的秒数 // 60,剩余的秒数 = 剩余的秒数 % 60。
最后,我们按照题目要求,将小时数、分钟数和剩余的秒数以英文冒号分隔,并且数字小于10的,需要在数字前补0。
例如,如果N=7259,那么小时数 = 7259 // 3600 = 2,剩余的秒数 = 7259 % 3600 = 59,分钟数 = 59 // 60 = 0,剩余的秒数 = 59 % 60 = 59。因此,输出为02:00:59。
4、病毒繁殖
提示信息:
某种病毒具有很强的繁殖能力,从病毒粒子出生后的第5分钟开始,每分钟可以复制出一个新的病毒粒子。新出生的病毒粒子从第5分钟开始,也可以每分钟复制一个新的病毒粒子。
举例来说,第1分钟时有一个病毒粒子,此病毒粒子从第5分钟开始复制新的病毒粒子,因此第5分钟时的病毒数量为2个;第6分钟时又复制出新的病毒粒子,因此第6分钟的病毒数量为3个;以此类推,第7分钟时病毒粒子数为4;第8分钟时病毒粒子数为5;第9分钟时,第5分钟复制出的病毒粒子开始复制新的病毒粒子,因此第9分钟时的病毒总数为7;第10分钟时,第6分钟复制出的病毒粒子开始复制新的病毒粒子,因此第10分钟时的病毒粒子总数为10。
题目描述:
计算病毒粒子总数,已知第一分钟时出生了一个病毒粒子,假设所有病毒粒子不会自动死亡,请计算第N分钟时的病毒粒子总数。
例如:前10分钟病毒粒子的总数分别为1,1,1,1,2,3,4,5,7,10。
输入描述:
输入一个正整数N(O<N≤60),表示时间。
输出描述:
输出第N分钟时,病毒粒子的总数。
样例输入:
10
样例输出:
10
参考答案:对于第N分钟时的病毒粒子总数,可以使用等比数列的求和公式来计算。病毒粒子的繁殖从第5分钟开始,所以第N分钟时的病毒粒子总数为等比数列的前(N-4)项和。等比数列的首项为2,公比为2,项数为(N-4),因此可以使用等比数列求和公式:S = a1 * (1 - r^n) / (1 - r),其中a1为首项,r为公比,n为项数。将a1=2,r=2,n=N-4代入公式,即可得到第N分钟时的病毒粒子总数。
解析:【喵呜刷题小喵解析】:
病毒粒子的繁殖从第5分钟开始,每分钟复制出一个新的病毒粒子,因此病毒粒子的数量形成了一个等比数列。等比数列的前n项和公式为:S = a1 * (1 - r^n) / (1 - r),其中a1为首项,r为公比,n为项数。在这个问题中,首项a1=2,公比r=2,项数n=N-4。因为病毒粒子从第5分钟开始繁殖,所以前N分钟中的前4分钟病毒粒子数量保持不变,为1。从第5分钟开始,病毒粒子数量开始按照等比数列增长,因此第N分钟时的病毒粒子总数为等比数列的前(N-4)项和。使用等比数列求和公式进行计算,即可得到第N分钟时的病毒粒子总数。
5、最佳策略
题目描述:
有一辆最大载重为15吨的货车。现一共有五件货品,重量分别是W1,W2,W3,W4,W5,价值分别是V1,V2,V3,V4,V5。现希望货车中装入的货物总价值越大越好。请你编写程序,帮助计算,在不超载的情况下,货车能够运输的货品最大总价值是多少?
例如,5件货品的重量和价值如下表所示:
输入描述:
第一行输入5个正整数,数字之间以一个空格分隔,表示货品的重量。
第二行输入5个正整数,数字之间以一个空格分隔,表示货品的价值。
输出描述:
计算能够运输的货品最大总价值,并输出。
样例输入:
3 4 6 6 5 1000 500 400 1200 300
样例输出:
2700
参考答案:```pythonweights = list(map(int, input().split()))values = list(map(int, input().split()))max_weight = 15total_weight = 0max_value = 0for i in range(5):if total_weight + weights[i] <= max_weight:total_weight += weights[i]max_value += values[i]else:breakprint(max_value)```
解析:【喵呜刷题小喵解析】:
这是一个01背包问题,目标是在不超过货车最大载重的情况下,使货车运输的货品总价值最大化。
首先,我们定义两个列表weights和values,分别存储货品的重量和价值。
然后,我们定义最大载重max_weight为15吨。
接下来,我们遍历所有的货品,如果当前货品的重量加上已经装载的货品重量不超过最大载重,就将其加入货车,并更新最大价值。否则,停止装载。
最后,输出最大价值。
在Python中,我们可以使用input函数从标准输入中读取一行数据,然后使用split函数将其分割成一个列表。使用map函数可以将字符串列表转换为整数列表。
在这个问题中,我们只需要遍历一次货品列表,因此时间复杂度为O(n),其中n为货品的数量。空间复杂度也为O(n),需要存储货品的重量和价值。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!