Advertisement

2021第十二届蓝桥杯Python组国赛 (真题&题解)

阅读量:

本次十二届蓝桥杯国赛试题涵盖了多个算法与编程领域的经典问题,包括带宽计算、质数判断、日期分析、最小权值问题、括号翻转等。A题通过数学计算解决了带宽问题,B题结合质数特性与字符串处理完成了纯质数的判断,C题利用日期和完全平方数的性质解决了完全日期的问题。D题涉及权值最小化,E题通过大写字母的处理完成了大写问题的解决,F题利用数字序列的特性完成了123问题的分析。G题结合冰山模型与递归算法完成了冰山问题的求解,H题通过和与乘积的关系完成了问题的分析,I题利用二进制字符串的特性完成了二进制问题的解决,J题通过栈和括号匹配完成了翻转括号序列的问题。参赛者在比赛中表现出色,尽管算法薄弱,但通过努力获得了不错的成绩,并对未来的算法学习充满信心。建议多尝试新事物,注重积累与成长。

十二届蓝桥杯国赛试题及解析(python组)

  1. A题:带宽性能优越,主要得益于其优秀的带宽指标。
  2. B题:纯质数的特性分析纯质数的特性分析。
  3. C题:完全日期的识别与处理完全日期的识别与处理。
  4. D题:最小权值的计算方法最小权值的计算方法。
  5. E题:大写字符的处理策略大写字符的处理策略。
  6. F题:数字123的特殊处理数字123的特殊处理。
  7. G题:冰山般的复杂性冰山般的复杂性。
  8. H题:和与乘积的计算关系和与乘积的计算关系。
  9. I题:二进制问题的解决方法二进制问题的解决方法。
  10. J题:翻转括号序列的高效处理翻转括号序列的高效处理。

先分享试题,再逐步完善题解

试题源文件链接在文末

我的感悟

我的经验和建议:不要害怕失败,积极寻求机会,多尝试实践,多接触新事物,通过经历不断成长,持续提升自我。


A题:带宽

在这里插入图片描述

【分析】

【代码】

复制代码
    #结果为 25
    1Byte=8bit
    1MB/s=8Mbps=8Mb/s
    200*1024/8=25600KB/s=25MB/s

B题:纯质数

在这里插入图片描述

【分析】

【代码】

复制代码
    #纯质数
    from math import *
    
    #判断是否为质数
    def isPrime(n):
    m=int(sqrt(n))+1
    for i in range(2,m):
        if n%i==0:
            return False
    return True
    
    #判断每一位是否都为质数
    def eve(n):
    res=['2','3','5','7']
    s=str(n)
    if s.count(res[0])+s.count(res[1])+s.count(res[2])+s.count(res[3])==len(s):
        return 1
    return 0
    
    ans=0
    for i in range(20210606):
    if (isPrime(i) and eve(i)):
        ans+=1
    print(ans)

C题:完全日期

在这里插入图片描述

【分析】

【代码】

复制代码
    from datetime import *
    from math import *
    a=date(2001,1,1)
    b=date(2021,12,31)
    gap=timedelta(days=1)
    #求每个数位的和
    def cul(n):
    summ=0
    nn=str(n)
    for i in nn:
        summ+=int(i)
    return summ
    #判断是否为完全平方数
    def judge(mm):
    x=sqrt(mm)
    y=int(sqrt(mm))
    if x==y:
        return 1
    return 0
    
    ans=0
    while a!=b:
    a=a+gap
    year=a.year
    month=a.month
    day=a.day
    #和
    summm=cul(year)+cul(month)+cul(day)
    #print(a)
    #print(summm)
    if judge(summm):
        ans+=1
        print(a)
    print(ans)

D题:最小权值

在这里插入图片描述

【分析】

【代码】

复制代码

E题:大写

在这里插入图片描述

【分析】

【代码】

复制代码

F题:123

在这里插入图片描述

【分析】

【代码】

复制代码

G题:冰山

在这里插入图片描述

【分析】

【代码】

复制代码

H题:和与乘积

在这里插入图片描述

【分析】

【代码】

复制代码
    #样例不能完全通过
    n=int(input())
    res=list(map(int,input().split()))
    ans=0
    def judge(n):
    summ=sum(n)
    cul=1
    for i in ress:
        cul*=i
    if summ==cul:
        return 1
    return 0
    
    for i in range(n):
    for j in range(i,n+1):
        ress=res[i:j]
        if len(ress)>0:
            if judge(ress):
                ans+=1
        j+=1
    i+=1
    print(ans)

I题:二进制问题

在这里插入图片描述

【分析】

【代码】

复制代码
    #样例不能完全通过
    N,K=map(int,input().split())
    ans=0
    for i in range(1,N+1):
    s=bin(i)[2:]
    
    if s.count("1")==K:
        ans+=1
    print(ans)

J题:翻转括号序列

在这里插入图片描述
在这里插入图片描述

【分析】

【代码】

复制代码

链接:https://pan.baidu.com/s/1KoCDQ34GBkf_l3y6t768ww
提取码:7e0n

全部评论 (0)

还没有任何评论哟~