3蓝桥杯练习系统 python

记录蓝桥杯刷题过程

上接:
1:https://blog.csdn.net/m0_45813696/article/details/115583882
2:https://blog.csdn.net/m0_45813696/article/details/115595814


目录

二、算法训练

ALGO-1 区间k大数查询

n = input()
s = list(map(int, input().split()))
m = int(input())
a = []
for i in range(m):
    l,r,k=map(int,input().split())
    s1= sorted(s[l-1:r], reverse=True)           #降序,s[l:r]左闭右开
    a.append(s1[k-1])
for j in range(m):
    print(a[j])

ALGO-2 最大最小公倍数(贪心)

n = int(input())
if n <= 2:
    print(n)
elif(n % 2 != 0):      #分析之后发现如果输入为奇数,结果:n(n-1)(n-2)
    print(n * (n-1) * (n-2))      
else:                        #发现如果输入为偶数,分两种情况
    if n % 3 == 0:      #是3的倍数
        print((n-1)*(n-2)*(n-3)) 
    else:                     #不是3的倍数
        print(n*(n-1)*(n-3))

ALGO-3 K好数(动态规划)

K,L=list(map(int,input().split()))
num=[[0 for i in range(L)] for j in range(K)]      #创建K行L列的矩阵

for i in range(K):
    num[i][0]=1

    
for j in range(L-1):                            #位数
    for i in range(K): 
        tmp=0
        for k in range(K):                      #最开始一位:0--K-1
            if k==i or abs(k-i)!=1:
                tmp+=num[k][j]
        num[i][j+1]=tmp

        
ans=0                                                 #K好数个数
for i in range(1,K):
    ans+=num[i][L-1]
print(ans%1000000007)

ALGO-49 寻找数组中最大值

n=int(input())
list1 = list(map(int, input().split()))
max = max(list1)
num = list1.index(max)    #index() 用于从列表中找出与某个值第一个匹配的索引位置。
print(max,num)

ALGO-51 Torry的困惑(基本型)

def is_prime(num):              #判断是否为质数
    for i in tmp:                 # 遍历质数数组
        if num % i == 0:
            return False
    tmp.append(num)
    return True


i = 3                        # 如果n大于2, 从数字3开始遍历
ans = 2                   # 默认填入第一个质数
tmp = [2]                # 质数数组
n = int(input())
while True:
    if len(tmp) >= n:
        break
    if is_prime(i):
        ans *= i
    i += 1
print(ans % 50000)

ALGO-53 最小乘积(基本型)

T=int(input())
for i in range(T):
    n=int(input())
    a=list(map(int,input().split()))
    b=list(map(int,input().split()))
    a.sort(reverse=False)                      #升序
    b.sort(reverse=True)                       #降序
    ans=0
    for j in range(len(a)):
        ans=ans+a[j]*b[j]
    print(ans)

ALGO-84 大小写转换(字符操作)

a=str(input())
b=a.swapcase()           #大小写互换
print(b)

ALGO-91 Anagrams问题(数组运算 字符操作)

```python
a=str(input())
b=str(input())
a=a.upper()
bb.upper()           #全换成大写

ans=0
if len(a)!=len(b):
    print('N')
else:
    for i in range(len(a)):
        if a.count(a[i])!=b.count(a[i]):   #count() 方法用于统计字符串里某个字符出现的次数
            ans=1
            print('N')
            break
    if ans==0:
        print('Y')

ALGO-148 5-1最小公倍数

def gcd(a,b):                      #求最大公约数
    c=a%b
    while c!=0:
        a=b
        b=c
        c=a%b
    return b
a,b=map(int,input().split())
lcm=a*b/gcd(a,b)                #!!!
print(int(lcm))

ALGO-150 6-1 递归求二项式系数值

def C(k,n):
    if k == n or k == 0:
        return 1
    else:
        return C(k, n-1)+C(k-1,n-1)            #递归

k,n = map(int, input().split())
print(C(k,n))

ALGO-195 1的个数

n=int(input())
ans=0
for i in range(1,n+1):
    strn=str(i)
    ans+=strn.count('1')   #count() 方法用于统计字符串里某个字符出现的次数
                                      #str.(sub, start= 0,end=len(string))
print(ans)

三、历届真题

翻硬币(贪心)

sta=input() 
end=input()

sta_nums=[]
end_nums=[]
ant=0

#把硬币的状态转化为1和0,正面为1,反面为0
for i in sta:
    sta_nums.append(1) if i=='*' else sta_nums.append(0)
for j in end:
    end_nums.append(1) if j=='*' else end_nums.append(0)

for i in range(len(sta_nums)-1):   #贪心:最多翻n-1次
    if end_nums[i]!=sta_nums[i]:
        sta_nums[i],sta_nums[i+1]=int(not sta_nums[i]),int(not sta_nums[i+1])
        ant+=1
print(ant)

PREV-1 核桃的数量

a,b,c=map(int,input().split())
if a<30 and b<30 and c<30:
    m=max(a,b,c)
    while True:
        if m%a==0 and m%b==0 and m%c==0:
            print(m)
            break
        m+=1

硬币拼凑指定面额

money=[1,5,10,20,50,100]
n = int(input())
li=[]
for i in range(n+1):
    li.append(0)
li[0]=1
for i in money:
    for j in range(n+1):
        if j>=i:
            li[j]=li[j]+li[j-i]
    print(li)

print(li[n])

最大子串问题

def FindGreatestSumOfSubArray(array):     #求最大子串
        f = array[0]
        res = array[0]
        for i in range(1,len(array)):
            f = max(f+array[i],array[i])
            res = max(res,f)
        return res
    
array=[6,-3,-2,7,-15,1,2,2]
print(FindGreatestSumOfSubArray(array))

判断是否为质数

n=int(input())

def isnum(a):      #判断是否为质数
    if a==2:
        return True
    elif a > 2:
        for i in range(2,a):
            if (a% i) == 0:
               return True
            else:
                return False
    else:
        return False

print(isnum(2))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝桥杯技能升级Python是指提升参赛者在蓝桥杯竞赛中使用Python编程的技能水平。 Python是一种高级编程语言,以其简洁易学、功能强大和跨平台的特点而广泛应用于软件开发、数据分析、人工智能等领域。在蓝桥杯竞赛中,Python是一种常用的编程语言之一,并被广大选手所青睐。 要提升蓝桥杯技能升级Python,首先需要掌握Python的基础知识,包括语法、数据类型、控制结构等。这些基础知识是编写Python程序的基石,只有牢固掌握才能让程序更加准确、高效。 其次,需要学习Python的常用库和模块。Python拥有丰富的第三方库,如NumPy、Pandas和Matplotlib等,这些库提供了很多方便的函数和工具,能够帮助参赛者更加高效地处理数据、进行可视化分析等。 另外,参赛者还可以通过参加相关的培训班或课程,结合实际项目进行实践,来提升自己在蓝桥杯竞赛中的Python编程能力。这些培训班和课程通常会涵盖更深入的Python知识和实际应用,能够帮助选手更好地理解和掌握Python的特性和技巧。 最后,参赛者还可以通过解决一些相关的编程题目来不断提升自己的技能。这些题目可以是蓝桥杯历年竞赛题目,也可以是其他在线编程题目。通过不断地练习,参赛者可以提高编程能力和解题思维,更好地应对蓝桥杯竞赛中的编程挑战。 总而言之,蓝桥杯技能升级Python需要掌握基础知识,学习常用库和模块,参加培训班或课程,进行实践项目,以及通过解题练习来提升自己的技能。只有不断地学习和实践,才能在蓝桥杯竞赛中取得好的成绩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值