2023蓝桥杯python大学A组部分题目详细解析

目录

特殊日期

分糖果

三国游戏

平均


特殊日期

记一个日期为yy年mm月dd 日,统计从2000年1月1日(含)到2000000年1月1日(含),有多少个日期满足年份yy是月份mm的倍数,同时也是dd的倍数。

题目链接

https://www.lanqiao.cn/problems/3495/learning/?page=1&first_category_id=1&sort=students_count&category_id=3&name=%E7%89%B9%E6%AE%8A%E6%97%A5%E6%9C%9F

典型的使用枚举思想,可以从2000年1月1日(含)到2000000年1月1日(含)每天是否符合特殊日期的要求进行枚举,符合条件计数就加1

mouth1 = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]  # 平年每个月天数列表,这里为了与月份统一下标,所以第一个为0
mouth2 = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]  # 闰年每个月天数列表def fun(x):  # 判断闰年函数if (x % 4 == 0 and x % 100 != 0) or x % 400 == 0:  # 能被4整除且不能被100整除,或者能被400整除return 1else:return 0ans = 0
for i in range(2000, 2000000):for j in range(1, 13):  # 月份从1到12if fun(i) == 0:  # 如果是平年for m in range(1, mouth1[j] + 1):  # 日期从1到mouth[j]if i % j == 0 and i % m == 0:  # i表示年份,j表示月份,m表示日期ans = ans + 1if fun(i) == 1:  # 如果是闰年for n in range(1, mouth2[j] + 1):if i % j == 0 and i % n == 0:ans = ans + 1
print(ans + 1)# 由于2000000.1.1以上循环没有但是也满足,所以要加上
# 35813063

这里使用定义每个月份的天数的列表可以简化后面的代码,这个思想对做这种时间题很有帮助

遇到时间问题还是一种思想就是可以使用datetime类,是python非常好用的用于计算时间的自带类,该类的使用方法可以查看我上次发的资源

https://download.csdn.net/download/m0_62574258/88760682

例如下题

对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从1900年1月1日至9999年12月31日,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。例如,2022年11月13日满足要求,因为2+0+2 +2 =(1+1)+(1+3)。请提交满足条件的日期的总数量。

import datetimedef fun(x):return sum(int(i) for i in str(x))  # 定义fun函数,用于计算数字的和# 定义开始和结束日期范围
d1 = datetime.datetime(1900, 1, 1)
d2 = datetime.datetime(9999, 12, 31)
# 计算开始和结束日期之间的总天数
y = (d2 - d1).days
ans = 0# 遍历日期范围内的每一天
for i in range(y):# 从当前日期中提取年、月和日a = d1.yearb = d1.monthc = d1.day# 检查年份的数字和是否等于月份数字和加上日期数字和if fun(a) == fun(b) + fun(c):ans = ans + 1# 使用一天的时间增量移动到下一天d1 = d1 + datetime.timedelta(days=1)# 打印结果
print(ans)

分糖果

两种糖果分别有 9 个和 16 个,要全部分给 7 个小朋友,每个小朋友得到的糖果总数最少为 2 个最多为 5 个,问有多少种不同的分法。 只要有其中一个小朋友在两种方案中分到的糖果不完全相同,这两种方案就算作不同的方案。

题目链接

https://www.lanqiao.cn/problems/4124/learning/?page=1&first_category_id=1&sort=students_count&category_id=3&name=%E5%88%86%E7%B3%96%E6%9E%9C

使用递归思想,对于每个孩子使用两个for循环分配两种糖果的个数,当一个孩子分配完时再递归分配下一个孩子,此时糖果数量要对应的扣除上次分配出去的,如果7个孩子都分配完且糖果没有剩余,则算一种方案

ans = 0def dfs(child, n, m):global ans  # 先声明ans是全局变量,否则函数内部的操作变量ans不会影响到函数外的ansif child == 0 and n == 0 and m == 0:  # 如果孩子数和两种糖果都分配完了即满足条件ans += 1for i in range(n + 1):  # 第一种糖果for j in range(m + 1):  # 第二种糖果if 2 <= i + j <= 5:dfs(child - 1, n - i, m - j)  # 继续递归对下一个孩子进行分配dfs(7, 9, 16)  # 7个孩子,第一种糖果有9个,第二种糖果有16个
print(ans)
#5067671

三国游戏

小蓝正在玩一款游戏。游戏中魏(X)、蜀(Y)、吴(Z)三个国家各自拥有一定数量的士兵X,Y,Z(一开始可以认为都为0)。游戏有n个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第i个事件发生时会分别让X,Y ,Z增加Ai,Bi,Ci,当游戏结束时(所有事件的发生与否已经确定),如果X,y,Z的其中一个大于另外两个之和,我们认为其获胜。例如,当X >Y +Z时,我们认为魏国获胜。小蓝想知道游戏结束时如果有其中一个国家获胜,最多发生了多少个事件?如果不存在任何能让某国获胜的情况,请输出-1。

输入格式

输入的第一行包含一个整数n。

第二行包含n个整表示Ai,相邻整数之间使用一个空格分隔。

第三行包含n个整数表示Bi,相邻整数之间使用一个空格分隔。

第四行包含n个整数表示Ci,相邻数之间使用一个空格分隔。

样例输入

3
1 2 2
2 3 2
1 0 7

样例输出:2

题目链接

https://www.lanqiao.cn/problems/3518/learning/?page=1&first_category_id=1&sort=students_count&category_id=3&name=%E4%B8%89%E5%9B%BD%E6%B8%B8%E6%88%8F

这里有个技巧就是每次三个国家都会增加,我们只需要计算相对增加量,然后对三个国家各自胜利分类讨论,因为我们可以控制哪些事件先发生哪些事件后发生,所以最后只需要使用贪心算法的思想,相对增量越少的时间越先发生就能使用最多的事件数

n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
c = list(map(int, input().split()))
x = []
y = []
z = []
for i in range(n):x.append(a[i] - b[i] - c[i])  # 存储每个事件魏国相比较其它两国的相对增量y.append(b[i] - a[i] - c[i])  # 存储每个事件蜀国国相比较其它两国的相对增量z.append(c[i] - a[i] - b[i])  # 存储每个事件吴国相比较其它两国的相对增量# 由于三国一开始都是0,所以只要当所有发生事件的相对增量和大于0即胜利# 将相对增量排序,要求最大发生事件数,应该让相对增量为正数全部发生,然后相对增量为负数的从大到小发生,直到相对增量和大于0# 可以认为所有事件按贡献的大小从大到小的顺序发生,所以将相对增量降序排序x.sort(reverse=True)y.sort(reverse=True)z.sort(reverse=True)def win(p):  # 求p国获胜的最大发生事件数sum = 0for i in range(n):sum = sum + p[i]if sum < 0:return ireturn 0print(max(win(x), win(y), win(z)))  # 依次求x国、y国、z国胜利的最大发生事件数,然后再取最大值

平均

有一个长度为n的数组(n是10的倍数),每个数a都是区间[0,9]中的整数。小明发现数组里每种数出现的次数不太平均,而更改第i个数的代价为bi,他想更改若干个数的值使得这10种数出现的次数相等(都等于n/10),请问代价和最少为多少。

题目链接

https://www.lanqiao.cn/problems/3532/learning/?page=1&first_category_id=1&sort=students_count&category_id=3&name=%E5%B9%B3%E5%9D%87

输入格式

输入的第—行包含—个正整数n。

接下来n行,第i行包含两个整数ai,bi,用一个空格分隔。

样例输入

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

样例输出:27

还是使用贪心思想,从0到9开始遍历,看哪个数字的数量超过了n/10,某个数字超过平均个数多少个就要改多少个,而改哪几个是由代价决定的,代价越小越先被改变。这里使用二维列表,b列表中存放了10个一维列表,0到9每种数字的所有代价分别存在这10个一维列表

n = int(input())
sum = 0  # 代价和
b = [[] for i in range(10)]  # 创建二维列表,b[i]存储i数字的所有代价
for i in range(n):o, e = map(int, input().split())  # o是数字几,e是该数的代价b[o].append(e)  # 根据数字找到对应哪个列表,然后把该数的代价加入到该列表中ave = n // 10
for i in range(10):  # 数字从0到9遍历if len(b[i]) > ave:  # len(b[i])表示i数字的个数,如果大于平均值,多出来的就要变成其他数num = len(b[i]) - ave  # 与平均值作差,差值num表示有多少个变成别的数b[i].sort()  # 将i数字的所有代价升序排序for j in range(num):  # 从中取代价最小的num个数,从开头开始取,一直取num个sum = sum + b[i][j]  # 把取出的数需要的代价加上sumprint(sum)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ps:信息面板选项

点击“信息”面板控制菜单按钮&#xff0c;打开“信息面板选项” Info Panel Options对话框。 第一颜色信息 First Color Readout 指定在“信息”面板中的“第一颜色信息”区域显示的像素颜色值所基于的颜色模式。 模式 Mode --实际颜色 Actual Color 默认选项。显示在当前颜色…

第二十九天| 491.递增子序列 、46.全排列、47.全排列 II

Leetcode 491.递增子序列 题目链接&#xff1a;491 递增子序列 题干&#xff1a;给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出…

服装设计公司,如何用钉钉实现企业数字化成功转型?

钉钉作为数字化工作平台&#xff0c;为某服装设计公司实现了组织管理的数字化转型&#xff0c;构建了一站式的工作平台。通过钉钉赋能&#xff0c;有利于企业推进组织架构、员工沟通、产品运营和客户服务等方面的数字化、智能化转型。 借助钉钉平台&#xff0c;该服设公司轻松实…

oracle主库增加redo组数

redo log&#xff08;重做日志&#xff09;&#xff1a; 重做日志&#xff1a;简单来说就是&#xff0c;将oracle数据库的DML、DDL&#xff08;数据库操作语言&#xff0c;数据库定义i语言&#xff09;操作记录在日志中&#xff0c;方便恢复及备库使用&#xff0c;以组的方式管…

PCIE Order Set

1 Training Sequence Training Sequence是由Order Set(OS) 组成&#xff0c;它们主要是用于bit aligment&#xff0c;symbol aligment&#xff0c;交换物理层的参数。当data_rate 2.5GT or 5GT 它们不会被扰码(scramble)&#xff0c;当date_rate 8GT or higher 根据特殊的规…

计算机网络-无线通信技术与原理

一般我们网络工程师接触比较多的是交换机、路由器&#xff0c;很少涉及到WiFi和无线设置&#xff0c;但是呢在实际工作中一般企业也是有这些需求的&#xff0c;这就需要我们对于无线的一些基本配置也要有独立部署能力&#xff0c;今天来简单了解一下。 一、无线网络基础 1.1 无…

前端性能优化:提升网站加载速度的终极指南

目录 一、引言 二、问题分析 三、优化方案 1. 减少HTTP请求次数&#xff1a; 方法一&#xff1a;合并文件 方法二&#xff1a;CSS Sprites 方法三&#xff1a;使用CSS和JavaScript工具 2. 使用CDN加速&#xff1a; 方法&#xff1a; 示例&#xff1a; 引入CDN提供的j…

ruoyi-nbcio中xxl-job的安装与使用

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a; http://122.227.135.243:9666 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbach…

【Linux】Ubuntu 22.04 升级 nodejs 到 v18

Ubuntu 22.04 已经安装的nodejs 版本 nodejs is already the newest version (12.22.9~dfsg-1ubuntu3.3). 删除以前的 nodejs 版本&#xff1a; 1. sudo apt remove nodejs rooterp:~# sudo apt remove nodejs Reading package lists... Done Building dependency tree..…

Docker 基本介绍

Docker 基本介绍 镜像 Docker镜像就是一个只读的模板。 例如&#xff1a;一个镜像可以包含一个完整的ubuntu操作系统环境&#xff0c;里面仅安装了Apache或用户需要的其它应用 程序。 镜像可以用来创建Docker容器。Docker提供了一个很简单的机制来创建镜像或者更新现有的镜…

PHP、Python、Java 和 Go语言对比

PHP、Python、Java 和 Go 都是流行的编程语言&#xff0c;每种语言都有其独特的优势和适用场景。下面是对这些语言的一些基本对比&#xff1a; 一&#xff1a;PHP 适用场景&#xff1a;主要用于Web开发&#xff0c;特别是服务器端脚本。 特点&#xff1a;语法简单易懂&#…

ChatGPT4 教你如何完成SQL的实践应用

对数据库的各项应用与操作都离不开SQL来对数据进行增删改查。 例如 &#xff1a; 有一张某公司职员信息表如下&#xff1a; 需求1&#xff1a;在公司职员信息表中&#xff0c;请统计各部门&#xff0c;各岗位下的员工人数。 如果这个SQL语句不会写或者不知道怎么操作可以交给…

Excel——分类汇总

1.一级分类汇总 Q&#xff1a;请根据各销售地区统计销售额总数。 第一步&#xff1a;排序&#xff0c;我们需要根据销售地区汇总数据&#xff0c;我们就要对【销售地区】的内容进行排序。点击【销售地区】列中任意一个单元格&#xff0c;选择【数据】——【排序】&#xff0c…

sqli靶场完结篇!!!!

靶场&#xff0c;靶场&#xff0c;一个靶场打一天&#xff0c;又是和waf斗智斗勇的一天&#xff0c;waf我和你拼啦&#xff01;&#xff01; 31.多个)号 先是一套基本的判断 &#xff0c;发现是字符型&#xff0c;然后发现好像他什么都不过滤&#xff1f;于是开始poc 3213131…

今日头条推出秒真问答 布局抖音口碑时机来了

近来&#xff0c;今日头条对部分业务做出调整。一方面是将“头条百科”升级为“抖音百科”&#xff0c;通过“抖音百科”这个新品牌&#xff0c;更好的为今日头条和抖音的内容场景服务。另外一方面则是&#xff0c;推出全新的问答业务“秒真问答”&#xff0c;目前已经在抖音和…

next项目页面性能调优

next项目页面性能调优 一般来说性能优化可以分为加载时、运行时两部分的优化。 扩展参考链接&#xff1a; 前端性能优化 24 条建议 Webpack 4进阶–从前的日色变得慢 &#xff0c;一下午只够打一次包 Webpack 分包优化首屏加载 参考指标 FCP&#xff08;First Contentful P…

java生成二维码

1、引入pom依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version> </dependency> <dependency><groupId>com.google.zxing</groupId><artifact…

Android 自定义BaseFragment

直接上代码&#xff1a; BaseFragment代码&#xff1a; package com.example.custom.fragment;import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx…

【网络技术】【Kali Linux】Nmap 嗅探(一)简单扫描

一、实验环境 本次实验进行简单的Nmap扫描&#xff0c;实验使用 Kali Linux 虚拟机和 Ubuntu Linux 虚拟机完成&#xff0c;主机操作系统为 Windows 11&#xff0c;虚拟化平台选择 Oracle VM VirtualBox&#xff0c;如下图所示。 二、实验步骤 1、相关配置 Kali Linux 虚拟机…

第十一个知识点:操控BOM对象

BOM&#xff1a;浏览器对象模型 --- B/S、Object、Model window navigator screen location document history window:操作浏览器窗口 //我们可以通过一些指令控制浏览器 window.alert();//弹窗 window.innerwidth;//获取浏览器页面宽度navigator:封装了浏览器的信息…