• 第十三届蓝桥杯Python B组国赛题解


    写在开头:题解全部为个人思路,仅供参考
    获奖情况:国赛二等奖(50分左右,应该不到50分)

    试题地址https://www.aliyundrive.com/s/QBKYnUpeh3v
    提取码: d59a

    题解还没有全部写完,持续更新

    试题A:斐波那契与7

    在这里插入图片描述

    """
    题意分析
       题目中问电脑为个位上7的个数,所以只考虑个位就行,不用在考虑其他位,
       即结果只保留个位就行
       肯定有规律,我们只需要找到找个规律就行
    """
    f1 = 0
    f2 = 1
    f3 = 1
    c = 0   # 统计出现的次数
    for i in range(60):
        print(f3, end=' ')  # 斐波那契数列中的数字
        f3 = (f1+f2)%10
        if f3 ==7:
            c+=1
        f1 = f2
        f2 = f3
    # 1 1 2 3 5 8 3 1 4 5 9 4 3 7 0 7 7 4 1 5 6 1 7 8 5 3 8 1 9 0 9 9 8 7 5 2 7 9 6 5 1 6 7 3 0 3 3 6 9 5 4 9 3 2 5 7 2 9 1 0
    # 经过验证,60个一循环 每个循环里面有8个个位为7的数字
    print()
    print(c)
    print(202202011200//60)  # 一共3370033520次循环
    print((202202011200//60)*8) # 26960268160
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    答案为:26960268160

    试题 B: 小蓝做实验

    在这里插入图片描述比赛时想用质数筛来解决问题,但是代码没有跑完,不知道哪里的问题
    质数筛解题 关于质数筛看这个

    试题 C: 取模

    在这里插入图片描述

    # 暴力
    t = int(input())
    nums = []
    for i in range(t):
        n,m = input().split()
        n = int(n)
        m = int(m)
        f = False
        for j in range(1,m+1):
            if f:
                break
            for k in range(j+1,m+1):
                if n%j==n%k:
                    f = True
                    nums.append('Yes')
                    break
            
        else:
            nums.append('No')
    for i in nums:
        print(i)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    试题 D: 内存空间

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

    t = int(input())
    zong = 0 # 总大小,单位B
    for i in range(t):
        s_lst = input().split()
        if s_lst[0] == 'int':     # 根据不同的输入情况进行分类
            st1 = s_lst[1].split(',')
            zong+=len(st1)*4  
        elif s_lst[0] == 'long':
            st1 = s_lst[1].split(',')
            zong+=len(st1)*8 
        elif  s_lst[0] == 'String':
            st1 = s_lst[1].split(',')
            num = 0
            for item in st1:
                num+=len(item.split('=')[1])-2
            zong+=num-1
        elif s_lst[0] == 'int[]':
            num = 0
            for it in range(1,len(s_lst)):
                if 'long' in s_lst[it] and ';' not in s_lst[it]:
                    num += int(s_lst[it][4:-1])
                elif 'long' in s_lst[it] and ';' in s_lst[it]:
                    num += int(s_lst[it][4:-2])
            zong+=num*4
        elif  s_lst[0] == 'long[]':
            num = 0
            for it in range(1,len(s_lst)):
                if 'long' in s_lst[it] and ';' not in s_lst[it]:
                    num += int(s_lst[it].split(',')[0][5:-1])
                elif 'long' in s_lst[it] and ';' in s_lst[it]:
                    num += int(s_lst[it][5:-2])
                    
            zong+=num*8
    
    z = [0,0,0,0]   # B,KB,MB,GB 前的数值
    for i in range(4):
        z[i]=zong%1024
        zong = zong//1024
        if zong <=0:
            break
    
    result = ''
    result_st = ['GB','MB','KB','B']
    for i in range(1,len(z)+1):
        if z[4-i] != 0:
            result+=f'{z[4-i]}{result_st[i-1]}'
    print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    试题 E: 近似 GCD

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

    试题 F: 交通信号

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

    试题 G: 点亮

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

    试题 H: 打折

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

    试题 I: owo

    在这里插入图片描述

    试题 J: 替换字符

    在这里插入图片描述
    主要采用了切片和replace()函数

    s = input()
    m = int(input())
    for i in range(m):
        nums = input().split()
        l = int(nums[0])
        r = int(nums[1])
        x = nums[2]
        y = nums[3]
    
        s1 = s[0:l-1]
        s2 = s[l-1:r]
        s3 = s[r:]
        s2 = s2.replace(x,y)
        s = s1+s2+s3
    print(s)
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    vue使用谷歌地图实现地点查询
    Java多线程——线程池
    8、Mybatis-Plus 分页插件、自定义分页
    【Spring】Spring的AspectJ的AOP
    【云原生 | 38】Docker快速部署开源脚本语言PHP
    解释一下分库分表的概念和优缺点。如何设计一个高性能的数据库架构?
    极智开发 | 腾讯云ECS本地开发环境搭建
    在 Android Studio 中为 C++ 设置 OpenCV(4.6.0)
    力扣(LeetCode)2095. 删除链表的中间节点(C++)
    ABB电磁流量计维修信号变送器维修41F/E4技术参数
  • 原文地址:https://blog.csdn.net/qq_52007481/article/details/125612645