第十四届蓝桥杯大赛软件赛省赛(Python大学A组)

2024-02-26 1511阅读

温馨提示:这篇文章已超过393天没有更新,请注意相关的内容是否还可用!

2023年蓝桥杯  省赛真题
Python大学A组

        试题A:特殊日期

        试题B:分糖果

        试题C:三国游戏

        试题D:平均

        试题E:翻转

        试题F:子矩阵

        试题G:阶乘的和

        试题H:奇怪的数

        试题I:子树的大小

        试题J:反异或01串


试题A:特殊日期   (5分)

【问题描述】

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

【答案提交】

        这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只输出这个整数,输出多余的内容将无法得分。

【解析与方法】

        最简单粗暴的方法就是直接从2000年1月1日遍历到2000000年1月1日,使用这种方法写建议使用C++来写,运行速度快一些,Python跑的满。Python虽然有比较好用的datetime包,但是Python的datetime对象可以表示的日期范围从公元1年1月1日到公元9999年12月31日。题目给的最大日期已经超了,一跑就报错。所以还是直接暴力跑方便点且不容易出错。

【Python程序代码】

mon = [0,31,28,31,30,31,30,31,31,30,31,30,31]
def run(x):  #判断是否为闰年
    if x%400==0 or (x%4==0 and x%100!=0):
        return True
    return False
res = 0
for year in range(2000,2000000):
    if run(year):
        mon[2]=29
    else:
        mon[2]=28
    for mm in range(1,13):
        for dd in range(1,mon[mm]+1):
            if year%mm==0 and year%dd==0:
                res += 1
print(res+1)  #前面只迭代到了1999999年12月31日,最后2000000年1月1日也是一个答案

最终结果为:35813063

 拓展:datetime对象的使用方法

from datetime import datetime, timedelta
# 定义开始和结束日期
start_date = datetime(2023, 1, 1)
end_date = datetime(2024, 1, 1)
# 定义时间间隔
delta = timedelta(days=1)
# 迭代日期范围
while start_date =a[i] and c2>=b[i]:
                dfs(u+1,c1-a[i],c2-b[i])
dfs(0,9,16)
print(ans)

最终结果:5067671


试题C:三国游戏     (10分) 

【问题描述】

        小蓝正在玩一款游戏,游戏中魏(X)、蜀(Y)、吴(Z)三个国家各自拥有一定数量的士兵X、Y、Z(一开始可以认为都是0)。游戏有n个可能会发送的事件,每个事件之间相互独立且最多只发送一次,当第i个事件发送时会分别让X、Y、Z增加第十四届蓝桥杯大赛软件赛省赛(Python大学A组) 第十四届蓝桥杯大赛软件赛省赛(Python大学A组) 第十四届蓝桥杯大赛软件赛省赛(Python大学A组).

        当游戏结束时(所以事件的发生与否已经确定),如果X,Y,Z的其中一个大于另外两个之和,我们认为其获胜。例如,当X>Y+Z时,我们认为魏国获胜,小蓝想知道游戏结束时,如果有其中一个国家获胜,最多发生了多少个事件?如果不存在任何一个让某个国家获胜的情况,请输出-1。

【输入格式】

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

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

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

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

【输出格式】

        输出一行包括一个整数表示答案。

【样例输入】

3
1 2 2
2 3 2
1 0 7

【样例输出】

2

【测评用例与规模】

        对于 40% 的评测用例,n

        对于 70%的评测用例,nY+Z的情况,此时并不表示某魏国获胜了。而是要等到全部事情发生后比对X与Y+Z的情况才能判断(省赛中误解了导致寄掉了)。理解后难度就直行下降了。因此可以枚举魏、蜀、吴三个国家想要获胜最多事情数量,然后取最大值即是答案。

        假设魏国获胜:令new_X =[ Ai - Bi - Ci].  10:ans = max(ans,resZ) if sum_X=0 and i+1

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]