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

mi目录

2022

1.

2.

1. 使用 format() 方法

2. 使用 f-string(Python 3.6 及以上)

2023

1.

2.

3.

4


闽农大宝玲楼

2022

1.

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

非常baby难度的一题,对于这种没有复杂度要求的比赛,大胆利用好python的特有功能

求组合数的库。这题我的思路是把从n中抽取k个,我们可以先抽取索引值,然后根据索引值找时间和食量。

from itertools import combinations
input_data=list(map(int,input().split()))
n=input_data[0]
k=input_data[1]
t=list(map(int,input().split()))
e=list(map(int,input().split()))
x=[]
comb=list(combinations(range(n),k))
m=len(comb)
v=[]
tsum=0 #注意清零
flag=[]
for com in comb:tsum=0v=[] #同样的,注意清零for j in com:tsum+=t[int(j)]v.append(e[int(j)])ex=min(v)flag.append(tsum*ex)
result=max(flag)
print(result)

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位小数。
输出格式:平均每天送件单数: ** *.**, 平均每天行车里程数: ** *.** (说明,输出字符串,精度为两位小数)
a=[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]
b=[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]
for i in range(len(a)):if i>=len(a):breakif a[i]==-1:a.remove(a[i])b.remove(b[i])
x=sum(a)
t=len(a)
y=sum(b)
m=x/t
n=y/t
print("平均每天送件单数:""{:.2f}".format(m),",","平均每天行车里程数:","{:.2f}".format(n))

注意一下保留两位小数的写法,我这边是一种

1. 使用 format() 方法

number = 3.14159
formatted_number = "{:.2f}".format(number)
print(formatted_number)  # 输出: 3.14
2. 使用 f-string(Python 3.6 及以上)
number = 3.14159
formatted_number = f"{number:.2f}"
print(formatted_number)  # 输出: 3.14
给定两个正整数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

简单,就是把每次把个位取下来。

f=[0]*10
input_data=list(map(int,input().split()))
m=input_data[0]
n=input_data[1]for i in range(m,n+1):j=iwhile(j):f[j%10]+=1j//=10
for i in range(10):if(f[i]!=0):print(f"{i}:{f[i]}")

注意j//10一定是整数除法

2023

1.

题目描述
小明在玩进阶版大富翁, 进阶版大富翁有特殊的步数计算方法。小明每次可以走的步数由一个公式决定。公式每个部分可以是一个整数或者一次数字抽奖 nds 。nds 表示, 在1到 s 中的整数中, 可以抽取 n 次,结果是你 n 次结果的和。总步数就是整个式子的结果。
如1+2d3,代表的就是1+2次在1到3之间抽取数字的结果。
结果最小值为三, 最大值为七。
现在题目中会给你一个字符串 s 表示步数的计算公式, 请你编写代码, 帮小明计算一下, 他可以走的步数的期望值是多少? (结果如果不是整数, 那么保留一位小数)。
输入输出格式
输入格式
一个字符串 s。
输出格式
一个整数。
输入输出样例1
输入
1+2d3
输出 5

利用python的异常检测。

然后就是期望值这里我们可以推导一下

\sum \frac{x_{i}}{s}=\frac{s+1}{2}

x=0
y=0
z=0
s=list(input().split('+'))
for i in range(len(s)):try:x+=int(s[i])except ValueError:y+=int(s[i][0])*int(s[i][2])z+=int(s[i][0])
sum=x+(y+z)//2
print(sum)

2.

给定两个字符串 text1 和text2,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列, 返回0。一个字符串的子序列是指这样一个新的字符串: 它是由原字符串在不改变字符的相对顺序的情况下删除某些字符 
(也可以不删除任何字符) 后组成的新字符串。
例如, ace 是 abcde 的子序列, 但 aec 不是 abcde 
的子序列。
两个字符串的公共子序列是这两个字符串所共同拥有的子序列。
输入格式
字符串。
输出格式
字符串。
输入/输出样例
输入1
lijiji. jjj
输出1
4
说明/提示
· text1 和 text2 仅由小写英文字符组成。

可以考虑用动态规划,也可以求组合来解

from itertools import combinations
def getn(s):m=[]for i in range(len(s)+1):coms=list(combinations(s,i))for com in coms:m.append(''.join(com))return m
input_data=input().split(',')
s1=input_data[0]
s2=input_data[1]
str1=getn(s1)
str2=getn(s2)
num=[]
for st in str1:if st in str2:num.append(len(st))
if num:numx=sorted(num)print(numx[-1])
else:print(0)

3.

题目描述
左截断素数是不包含0 位的素数, 当连续删除第一个数字时, 结果始终为素数。
可右截断的素数是不包含 0位的素数, 当连续删除最后一位时, 结果始终为素数。
创建一个将整数作为参数的函数, 并且:
如果整数只是一个可左截断的素数, 则返回“left”。
如果整数只是一个可右截断的素数, 则返回“right”。
如果整数是两者, 则返回“both”。
否则, 返回 False。
输入输出格式
输入格式
输入一个整数;
输出格式
输出一个字符串, 表示输入整数的素数类型。
输入输出样例1
输入
9137
输出
left
解释 (可选)
因为 9137 137 37 7 都是质数。
输入输出样例2
输入
5939
输出
right
解释 (可选)
因为5939 593 59和5都是素数。
说明提示
输入整数不会超过10⁶,

利用好截断

def is_prime(n):if n <= 1:return Falseif n <= 3:return Trueif n % 2 == 0 or n % 3 == 0:return Falsefor i in range(5, int(n ** 0.5) + 1, 6):if n % i == 0 or n % (i + 2) == 0:return Falsereturn Truedef left_truncatable_prime(n):str_n = str(n)for i in range(len(str_n)):if not is_prime(int(str_n[i:])):  return Falsereturn Truedef right_truncatable_prime(n):str_n = str(n)for i in range(len(str_n)):if not is_prime(int(str_n[:len(str_n) - i])):  return Falsereturn Truedef truncatable_prime_type(n):is_left = left_truncatable_prime(n)is_right = right_truncatable_prime(n)if is_left and is_right:return "both"elif is_left:return "left"elif is_right:return "right"else:return Falsenum = int(input())
result = truncatable_prime_type(num)
print(result)
"""


4

最近, 小明去了一个古老的国家。在之前很长的时间里, 它都是世界上最富有、最强大的王国。因此, 这个国家的人民仍然非常自豪, 即使当他们的国家不再那么富有。
这个国家的商人每个人只卖一件商品, 
每件商品具有一定价值, 但如果你的钱低于一定金额, 他们会拒绝与你进行交易。
如果小明有一定单位的钱, 小明能得到的最大商品价值是多少?
输入输出格式
输入格式
第一行包含两个整数 N,M, 分别表示商品的数量和初始总金额。
接下来输入 N 行, 每行包含三个数字 P,Q,V, 分别表示每件商品的价格, 交易底线金额和商品的价值。
数字之间以空格间隔。
输出格式
针对输入, 打印出能得到的最大商品价值。
输入输出样例1
输入
2 10
10 15 10
5 10 5
输出
5

动态规划的背包问题n

input_data = list(map(int, input().split()))
n = input_data[0]  
m = input_data[1]  p = [[0] * 4 for _ in range(n + 1)]  
f = [[0] * (m + 1) for _ in range(n + 1)]  for i in range(1, n + 1):p[i] = list(map(int, input().split())) for i in range(1, n + 1):for j in range(0, m + 1):  # j 从 0 到 mif j < p[i][0]:  f[i][j] = f[i - 1][j] elif j>p[i][0]:f[i][j] = max(f[i - 1][j], f[i - 1][j - p[i][0]] + p[i][2])else:f[i][j]=f[i-1][j]print(f[n][m])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/15720.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

函数的栈帧

前言&#xff1a; 1.请使用vs2013调试&#xff0c;我使用vs2019被恶心到了&#xff0c;封装严重&#xff0c;不利于观察。 2.函数栈帧&#xff1a;函数就是程序&#xff0c;程序就需要空间来运行&#xff0c;所以我们要为他分配空间&#xff0c;分配的空间用ebp esp维护&…

机器学习基础04

目录 1.朴素贝叶斯-分类 1.1贝叶斯分类理论 1.2条件概率 1.3全概率公式 1.4贝叶斯推断 1.5朴素贝叶斯推断 1.6拉普拉斯平滑系数 1.7API 2.决策树-分类 2.1决策树 2.2基于信息增益的决策树建立 2.2.1信息熵 2.2.2信息增益 2.2.3信息增益决策树建立步骤 2.3基于基…

如何解决IDE添加错误GitHub token后无法连接GitHub的问题

背景 当初学者首次使用IDE&#xff08;IDEA、Xcode等&#xff09;对GitHub仓库进行操作&#xff08;push、fetch&#xff09;时&#xff0c;会提示输入GitHub账户和token&#xff0c;如果这时候你一不小心输入了错误的token&#xff0c;之后你就叫天天不应叫地地不灵了&#xf…

PPT技巧:如何合并PPT文件?

在工作与学习中&#xff0c;PPT&#xff08;PowerPoint&#xff09;演示文稿已成为信息传递、项目汇报、教育培训等领域不可或缺的工具。随着任务的累积&#xff0c;我们往往会积累大量单独的PPT文件&#xff0c;每个文件可能包含特定章节、项目阶段或是不同主题的内容。为了更…

安全见闻1-5

涵盖了编程语言、软件程序类型、操作系统、网络通讯、硬件设备、web前后端、脚本语言、病毒种类、服务器程序、人工智能等基本知识&#xff0c;有助于全面了解计算机科学和网络技术的各个方面。 安全见闻1 1.编程语言简要概述 C语言&#xff1a;面向过程&#xff0c;适用于系统…

k-近邻算法(K-Nearest Neighbors, KNN)详解:机器学习中的经典算法

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

LeetCode297.二叉树的序列化和反序列化

题目要求 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#xff0c;进而可以将转换后的数据存储在一个文件或者内存中&#xff0c;同时也可以通过网络传输到另一个计算机环境&#xff0c;采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序…

蓝牙5.0模块助力闹钟升级,开启智能生活第一步

随着智能家居产业的快速发展&#xff0c;智能闹钟作为其中一个重要的品类&#xff0c;逐渐从单一的时间提醒功能演变为集音频播放、语音交互、智能控制等多种功能于一体的智能设备。而在这些功能的实现中&#xff0c;蓝牙音频模组扮演着核心角色。 1、蓝牙音频模组的功能概述 …

自己动手写Qt Creator插件

文章目录 前言一、环境准备1.先看自己的Qt Creator IDE的版本2.下载源码 二、使用步骤1.参考原本的插件2.编写自定义插件1.cmakelist增加一个模块2.同理&#xff0c;qbs文件也增加一个3.插件源码 三、效果总结 前言 就目前而言&#xff0c;Qt Creator这个IDE&#xff0c;插件比…

力扣经典面试题

1.本题的目标是判断字符串ransomNote是否由字符串magazine中的字符构成&#xff0c;且由magazine中的每个字符只能在ransomNote中使用一次 2.采用的方法是通过一个字典cahr_countl来统计magazine字符串中每个字符出现的次数 3.然后遍历ransomNote字符串&#xff0c;对于其中的…

Java开发人员从了学习ArkTs笔记(三)-数据结构与线程通信全解析

大家好&#xff0c;我是一名热爱Java开发的开发人员。目前&#xff0c;我正在学习ARKTS&#xff08;Advanced Java Knowledge and Technology Stack&#xff09;&#xff0c;并将不断输出我的学习笔记。我将在这里分享我学习ARKTS的过程和心得&#xff0c;希望能够为其他开发人…

Java基础——预定义类/自定义类封装什么是Final类型

目录 预定义类——日历输出&#xff1a; 自定义类——在Java文件中&#xff1a; 什么是封装&#xff1f; 什么是final类型&#xff1f; 修饰变量&#xff1a; 修饰方法&#xff1a; 修饰类&#xff1a; 预定义类——日历输出&#xff1a; 例如&#xff1a;Math类、Date类…

spi 回环

///tx 极性0 &#xff08;sclk信号线空闲时为低电平&#xff09; /// 相位0 (在sclk信号线第一个跳变沿进行采样) timescale 1ns / 1ps//两个从机 8d01 8d02 module top(input clk ,input rst_n,input [7:0] addr ,input …

20241114软考架构-------软考案例16答案

每日打卡题案例16答案 16.【2017年真题】 难度&#xff1a;简单 阅读以下关于软件架构评估的叙述&#xff0c;在答题纸上回答问题1和问题2.(共25分) 【说明】 某单位为了建设健全的公路桥梁养护管理档案&#xff0c;拟开发一套公路桥梁在线管理系统。在系统的需求分析与架构设…

低成本出租屋5G CPE解决方案:ZX7981PG/ZX7981PM WIFI6千兆高速网络

刚搬进新租的房子&#xff0c;没有网络&#xff0c;开个热点&#xff1f;续航不太行。随身WIFI&#xff1f;大多是百兆级网络。找人拉宽带&#xff1f;太麻烦&#xff0c;退租的时候也不能带着走。5G CPE倒是个不错的选择&#xff0c;插入SIM卡就能直接连接5G网络&#xff0c;千…

Python学习小记3-传递任意数量的实参

1.形参名*toppings 中的星号让Python创建一个名为toppings 的空元组&#xff0c;不管调用语句提供了多少实参&#xff0c;这个形参会将它们统统收入囊中&#xff0c;即&#xff1a;无论几个小料 def make_pizza(size, *toppings):print(f"\n要制作一个{size}-inch的披萨&…

宝塔 docker 部署onlyoffice 服务

1.宝塔安装docker,直接下载安装就行 2.docker拉取onlyoffice镜像 docker pull onlyoffice/documentserver:5.3.1.26 5.4或更高的版本已经解决了连接数限制方法的Bug 3.创建容器 docker run -d --name onlyoffice --restartalways -p 暴露端口号:80 onlyoffice/documentserv…

【数据结构副本篇】顺序表 链表OJ

&#x1f3dd;️专栏&#xff1a;【数据结构实战篇】 &#x1f305;主页&#xff1a;f狐o狸x 学习其实和打游戏一样&#xff0c;当你觉得BOSS难打的时候就说明是你的等级和装备不够&#xff0c;此时就需要我们多去刷刷副本&#xff0c;增加一点经验&#xff0c;顺便爆点装备出…

论文笔记(五十六)VIPose: Real-time Visual-Inertial 6D Object Pose Tracking

VIPose: Real-time Visual-Inertial 6D Object Pose Tracking 文章概括摘要I. INTRODACTIONII. 相关工作III. APPROACHA. 姿态跟踪工作流程B. VIPose网络 文章概括 引用&#xff1a; inproceedings{ge2021vipose,title{Vipose: Real-time visual-inertial 6d object pose tra…

AI风向标|算力与通信的完美融合,SRM6690解锁端侧AI的智能密码

当前&#xff0c;5G技术已经成为推动数字经济和实体经济深度融合的关键驱动力&#xff0c;进入5G发展的下半场&#xff0c;5G与AI的融合正推动诸多行业的数字化转型和创新发展&#xff0c;终端侧AI和端云混合式AI将广泛应用于各类消费终端和各行各业。 在推动5G和AI与各行业场…