蓝桥杯备战练习 python冲击省一

简介: 蓝桥杯备战练习 python冲击省一

下面一共3道蓝桥杯真题 问题地址+代码分析+知识点考察(学习建议)

问题描述:1204. 错误票据 - AcWing题库


image.png


代码设计分析:(已AC)


先把所有数据存入一个列表s>>利用sort()排序


重号Id必然出现两次 通过循环存储下来


另创建一个连续数值的列表 范围(min(s),max(s))


通过set中的差集操作 找到漏网之鱼 (最后输出set中的元素需将其转换为列表)


重要知识点考察:列表sort()函数  Python List sort()方法 | 菜鸟教程 (runoob.com)


集合操作Python set() 函数 | 菜鸟教程 (runoob.com)


n=int(input().strip())
s=[]
res=""
for i in range(n):
    tmp=list(map(int,input().strip().split()))
    s+=tmp
s.sort()
res=""
sl=[i for i in range(min(s),max(s)+1)]
res+=str(list(set(sl)-set(s))[0])#取差集
for i in range(len(s)-1):
    if s[i]==s[i+1]:
        res+=" "+str(s[i])
        break##找重复的
print(res)


问题描述:1205. 买不到的数目 - AcWing题库(已AC)


image.png


代码设计分析:掌握数论里面一个定理:裴蜀定理:对于互质正整数a,b


p=ax+by (x,y>=0) p不能表示的最大整数的ab-(a+b)


证明过程:先了解一个数论符号:把下面的视频和文章结合起来 方便理解 数论:px+py 不能表示的最大数为pq-p-q的证明_PalpitateJM的博客-CSDN博客

image.png

信息学竞赛.数论.裴蜀定理_哔哩哔哩_bilibili

n,m=map(int,input().split())
print(n*m-n-m)
#ax+by gcd(a,b)=1 则ax+by不能表示的最大整数为ab-(a+b)



问题描述:1210. 连号区间数 - AcWing题库


image.png

暴力枚举法(60分):利用itertools中的combinations 列举出所有区间可能


再判断其合法性 Python | combinations实现排列组合_lovetaozibaby的博客-CSDN博客_combinations

n=int(input())
s=list(map(int,input().split()))
s.insert(0,0)
count=n#[1,1][2,2]...单独一个数也可以作为一个区间
def judge(res):
    tmp=[i for i in range(min(res),max(res)+1)]
    res=sorted(res)
    if tmp==res:
        return True
    return False
import itertools
p=[j for j in range(1,n+1)]
for k in itertools.combinations(p,2):
    #(1,7)或(7,1)
    start,end=min(k),max(k)
    if judge(s[start:end+1]):
        count+=1
print(count)



既然不能满分,转换思路:假设原列表存这样一个连续区间 (顺序不定)


比如[2,4,3,5,6]属于某个列表的子区间,可以发现,它是连续的(按照题意指排序过后)。


题目要求的特定区间 除了需要满足连续性以外 还需要满足下标的某种关系


即子区间的长度=连续区间的长度。详细一点说,我们上面给出的区间,它即是子区间又是连续区间,当把他看作子区间时,他的长度为R-L+1(最左(右)侧对应下标),当把他看作连续区间时,它的长度=6-2+1=5 可以发现=max-min+1


因而题目所要求的就是找到所有满足R-L+1=max-min+1的所有区间的个数


(未AC 80分)

image.png

一样的思路C++能过 可能Python跑的就是慢一点吧

n=int(input())
s=list(map(int,input().split()))
s.insert(0,0)
count=0
for i in range(1,len(s)):
    for j in range(i,len(s)):
        if j-i+1==max(s[i:j+1])-min(s[i:j+1])+1:
            count+=1
print(count)


我是小郑 正在奔赴热爱 奔赴山海 !欢迎批评指正问题交流  


目录
相关文章
|
1月前
|
Python
蓝桥杯练习题(一):Python组之入门训练题
这篇文章是关于蓝桥杯Python组的入门训练题,包括Fibonacci数列、圆的面积、序列求和和A+B问题的具体代码实现和样例输出。
128 0
|
1月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
63 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
1月前
|
人工智能 Python
蓝桥杯练习题(四):Python组之历届试题三十题
关于蓝桥杯Python组历届试题的三十个练习题的总结,包括题目描述、输入输出格式、样例输入输出以及部分题目的解题思路和代码实现。
32 0
蓝桥杯练习题(四):Python组之历届试题三十题
|
1月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(二):Python组之基础练习三十题
蓝桥杯Python编程练习题的集合,包含了三十个不同难度的编程题目,覆盖了基础语法、数据结构和算法等领域。
34 0
|
4月前
|
Python
Python推导式:小练习
Python推导式:小练习
|
4月前
|
Python
Python 练习实例35
Python 练习实例35
|
4月前
|
Python
Python 练习实例34
Python 练习实例34
|
4月前
|
Python
Python 练习实例36
Python 练习实例36
|
4天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
10天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
下一篇
无影云桌面