当前位置:首页 » 《随便一记》 » 正文

2022全国高校计算机能力挑战赛区域赛python组编程题和答案

2 人参与  2024年12月10日 14:00  分类 : 《随便一记》  评论

点击全文阅读


1.某动物研究员给动物园的动物们定了一个园区幸福值,其中园区幸福值的计算为一个园区内“所有动物的活动时间总和”乘上“所有动物中最小的食量”。现在新引进了n只动物,园长准备建一个包含k只动物的“最幸福动物园区”,如果从这n只动物中选择k只动物进入该园区,请问该园区的最高幸福值是多少?
输入格式:
第一行输入两个整数n,k,分别表示新引进的n只动物,与需要挑选的k只动物。(1 <= k <= n < 1000)
第二行输入n只动物各自的活动时间,以空格间隔。(1 <= <= 1000,单位分钟)
第三行输入n只动物各自的食量,以空格间隔。(1 <= <= 10000,单位克)
输出格式:
输出一个整数表示这k只动物的最大幸福值。2

输入样例1:

6 2
2 10 3 1 5 8
5 4 3 9 7 2

输入样例2:

10 4
2 10 3 1 5 8 6 9 10 4
5 4 3 9 7 2 4 5 2 1

输出样例1:
60
说明:选择第二只动物与第五只动物,幸福值为60

输出样例2:
120

import itertoolsn, k = map(int, input().split())# 获取n个动物的活动时间animal_active = list(map(int, input().split()))# 获取n个动物的食量animal_food = list(map(int, input().split()))# 用数组存储每一种可能组合的幸福值happy_arr = []# 随机组合k个数的所有可能combinations = itertools.combinations(range(n), k)# 遍历循环每个组合for combination in combinations:    # 遍历每个combination中的值(值指下标)    # 求和k个动物的活动总时间active_sum    active_sum = sum(animal_active[item] for item in combination)    # 求和k个动物中最小的食量food_min    food_min = min(animal_food[item] for item in combination)    # 求取当前组合的幸福值,并添加到happy_arr数组中    happy_arr.append(active_sum * food_min)print(max(happy_arr))

2.快递行业的兴起慢慢的改变了人们的生活方式,越来越多的人选择了快递的方式。列表LA和列表LB中分别存放了一位快递小 哥今年9月份每天送件的单数和行车里程(公里)数,其中数值-1表示该天休息,并未送件。
LA=[90,114,-1,110,178,115,164,155,132,-1,174,153,124,189,110,145,-1,160,180,139,127,129,134, -1,160,178,150,144,145,-1]
LB=[87,163,-1,160,184,155,169,140,129,-1,190,156,141,200,115,150,-1,181,190,147,120,110, 120,-1,170,167,144,135,110,-1]
要求:计算并输出9月份该快递小哥出工日每天平均的送件单数和平均的行车里程数,结果保留2位小数。
输出格式:平均每天送件单数:***.**,平均每天行车里程数:***.**(说明,输出字符串,精度为两位小数)

LA = [90, 114, -1, 110, 178, 115, 164, 155, 132, -1, 174, 153, 124, 189, 110, 145, -1, 160, 180, 139, 127, 129, 134,-1, 160, 178, 150, 144, 145, -1]LB = [87, 163, -1, 160, 184, 155, 169, 140, 129, -1, 190, 156, 141, 200, 115, 150, -1, 181, 190, 147, 120, 110,120, -1, 170, 167, 144, 135, 110, -1]# 求平均值def arg_function(arr):    sum = 0    index = 0    for i in range(len(arr)):        if arr[i] != -1:            sum += arr[i]            index += 1    arg_sum = sum / index    return arg_sumarg_LA = arg_function(LA)arg_LB = arg_function(LB)print("%.2f" % arg_LA)print("%.2f" % arg_LB)

3.给定两个正整数m、n(1<=m < n<=1000),请找出区间[m, n]中阿拉伯数字0~9出现的次数。比如[10, 12],0出现了1次,1出现了4次,2出现了1次,其余都是0次,输出时省略出现0次的数字。
输入格式: 
一行m与n两个正整数,空格间隔
输出格式:  按照0~9的顺序,每行单独输出每个数字出现的次数,数字与出现次数之间用冒号间隔
#输入样例1:
10 13
 输入样例2:
10 999

输出样例1:
0:1
1:5
2:1
3:1
输出样例2:
0:189
1:299
2:299
3:299
4:299
5:299
6:299
7:299
8:299
9:299

m, n = map(int, input().split())# 利用数组存放每个数字出现的总次数arr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]# 循环[m,n]的数字for i in range(m, n + 1):    # 数字属于[1,9]    if i < 10:        arr[i] = arr[i] + 1    # 数字属于[10,99]    elif i > 9 and i < 100:        a = int(i / 10)        b = int(i % 10)        arr[a] = arr[a] + 1        arr[b] = arr[b] + 1    # 数字属于[100,999]    elif i > 99 and i < 1000:        a = int(i / 100)        b = int(i % 100 / 10)        c = int(i % 100 % 10)        arr[a] = arr[a] + 1        arr[b] = arr[b] + 1        arr[c] = arr[c] + 1    # 数字1000    else:        arr[0] = arr[0] + 3        arr[1] = arr[1] + 1# 输出结果for i in range(len(arr)):    if arr[i] > 0:        print(f"{i}:{arr[i]}")


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/199106.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1