第十三届蓝桥杯大学A组题解(Python)

这篇具有很好参考价值的文章主要介绍了第十三届蓝桥杯大学A组题解(Python)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面 :

KS感觉这次比赛....Emmm一言难尽,贴吧充斥着车队,B站传着退费视频...

Whatever , 既然报了名并且用心准备了,那就全力以赴👊

本次考试特点 :模拟模拟模拟!从头模到尾!

学了那么久的暴力算法居然只能被冷藏...

———————————————————————————————————————————

* 这次的战果是1道填空 + 7道大题 本篇博客中大题的代码都通过了样例 并不能保证AC

* 如果我任何表达不清或者有任何不理解之处 可以留言交流 我会在看到的第一时间做出回答!

* 如有错误 欢迎指出!

Start :

 

第十三届蓝桥杯大学A组题解(Python)

 

 

第一题 : 没啥好说的了.. 签到题实锤 注意不要想去怎样写代码 这题纯纯的手算题 初中数学

答案 : 443

 

第十三届蓝桥杯大学A组题解(Python)

 这道题KS并没有写出来 除了暴力求解 我也确实没想到什么好的算法(我是fw

微信群有一哥们直接写了考试日期 :2022040920220409 据说是正确答案 😂

 

第十三届蓝桥杯大学A组题解(Python)

 思路:先用素数筛筛出小于n的所有素数 再判断是否能被n整除

n = int(input())

Flag = [True for i in range(n+1)]
for i in range(2,int(n**(0.5))+1) : # 素数筛
    if Flag[i] :
        tmp = i+i
        while tmp < n+1 :
            Flag[tmp] = False
            tmp += i
Sum = 0
for i in range(2,n+1) : # 判断因数
    if n % i == 0 and Flag[i] :
        Sum += 1
print(Sum)

 

第十三届蓝桥杯大学A组题解(Python)

第十三届蓝桥杯大学A组题解(Python)

第十三届蓝桥杯大学A组题解(Python)

我着实没想到第二个大题就让我无从下手...

如果有哪位大佬写出来了或者有思路 欢迎私信我或者在留言区教一下KS...

 

第十三届蓝桥杯大学A组题解(Python)

第十三届蓝桥杯大学A组题解(Python)

 这道题目还是有点意思 一眼看上去很难 但其实只要我们对两个样例模拟一下操作过程 很容易想到解决办法 (实在不行直接打印EMPTY估计也能骗几个测试点

思路:用一个while循环 出循环的条件是:要么字符串为空 要么这轮循环得到的字符串与上一轮循环得到的字符串相同 即后续的操作已经不能再影响字符串了 所以2^64就是吓人用的..

Convert函数:用于转换字符串 模拟裁切边缘字符的过程 我们判断每两个相邻的字符 若满足边缘字符的定义则取出他们的index放入备用集合中 最后返回对应索引不在集合里的字符组成的新字符串


s = input()
def convert(string) :
    res = []
    tmp = set()
    string = list(string)
    for i in range(len(string)) :
        if i == 0 or i == len(string)-1 :
            continue
        else :
            if string[i] == string[i-1] and string[i] != string[i+1] :
                tmp.add(i)
                tmp.add(i+1)
            if string[i] != string[i-1] and string[i] == string[i+1] :
                tmp.add(i-1)
                tmp.add(i)
    
    for i in range(len(string)) :
        if i not in tmp :
            res.append(string[i])
    res = "".join(res)
    return res

while 1 :
    new_string = convert(s)
    if s == new_string :
        print(s)
        break
    if new_string == '' :
        print('EMPTY')
        break
    s = new_string
                

 

第十三届蓝桥杯大学A组题解(Python)

第十三届蓝桥杯大学A组题解(Python)

第十三届蓝桥杯大学A组题解(Python)

思路 : 这道题思路还是很好想的 无非就是让重合次数最多的区间的值尽可能的大 所以我们只需要算出每一个点被几个区间所包含再排序 将原数组里的值由大到小赋给被排好序的点即可

import copy
n = int(input())
numList = list(map(int,input().split()))
temp = copy.deepcopy(numList)
temp.insert(0,0)
numList.sort()
m = int(input())
cmd = []
for i in range(m) :
    cmd.append(list(map(int,input().split())))

numList.insert(0,0)
count = dict((i,0)for i in range(1,n+1)) # 用字段储存每个点的访问次数
for item in cmd :
    for i in range(item[0],item[1]+1) :
        count[i] += 1

newCount = []
for i in count.keys() :
    newCount.append((i,count[i])) # 将字典转化为元组排序
newCount.sort(key=lambda x:x[1],reverse=True)

ans = [0 for i in range(n+1)]
for i in range(n) :
    tmp1,tmp2 = newCount[i]
    tmp = numList.pop() # 取出最大的数
    ans[tmp1] = tmp
out = 0
for i in range(m) :
    out += (sum(ans[cmd[i][0]:cmd[i][1]+1])-sum(temp[cmd[i][0]:cmd[i][1]+1]))
print(out)

 

第十三届蓝桥杯大学A组题解(Python)

第十三届蓝桥杯大学A组题解(Python)

第十三届蓝桥杯大学A组题解(Python)

这题... KS可以很明确地说不可能AC了 考场时我的思路是看能不能找到每组数的规律[1,3]

[1,4],[1,5]... 奈何时间有限 消磨了不少时间最后也没找到规律 不知道是不是思路错了 没有办法只能写了个暴力上去... 能骗几分算几分吧...


import itertools

n = int(input())
numList = [i for i in range(1,n+1)]
def check(lst) :
    res = []
    for i in range(len(lst)) :
        tmp = 0
        for j in range(i) :
            if lst[i] > lst[j] :
                tmp += 1
        res.append(tmp)
    return sum(res)%998244353
ans = 0
for item in itertools.permutations(numList) :
    ans = (ans + check(list(item)))%998244353
print(ans)

 

第十三届蓝桥杯大学A组题解(Python)

 思路 : 最长上升子序列模版题了 特判一下是否为全上升的序列 若不是 直接输出最长上升子序列+K即可 否则输出N


def check(lst) :
    for i in range(1,len(lst)) :
        if lst[i] < lst[i-1] :
            return False
    return True

N,K = map(int,input().split())
numList = list(map(int,input().split()))
if check(numList) :
    print(N)
else :
    dp = [1 for i in range(N)]
    for i in range(N) :
        for j in range(i) :
            if numList[i] >= numList[j] :
                dp[i] = max(dp[i],dp[j]+1)
    ans = dp[-1] + K
    print(ans)

 

 第十三届蓝桥杯大学A组题解(Python)

 第十三届蓝桥杯大学A组题解(Python)

 思路:贪心+模拟 while循环 只要还有相邻的两个数都不为0 就一起-1 直到不能再减为止 此时剩下数的和是几就加几

import copy
n,K = map(int,input().split())
numList = list(map(int,input().split()))
count = 0
def check(lst) :
    if 0 in lst :
        return False
    return True
while 1 :
    tmp = copy.deepcopy(numList)
    for i in range(n-K+1) :
        if check(numList[i:i+K]) :
            count += 1
            for j in range(i,i+K) :
                numList[j] -= 1
    if tmp == numList :
        break
for i in range(n) :
    count += numList[i] 
print(count)

 

第十三届蓝桥杯大学A组题解(Python)

第十三届蓝桥杯大学A组题解(Python)

第十三届蓝桥杯大学A组题解(Python)

 思路 : 这题考查方向主要还是数论 具体来说 :有这样几类数是表示不出来的 :

1 质数

2 合数 但该合数不断除2或者不断除3后得到了个质数

3 不断除2直到不能除 再不断除3 若只能除一次3 则不符合

或者不断除3 再不断除2 若只能除一次2 则不符合 

import copy
T = int(input())
cmd = []
for i in range(T) :
    cmd.append(int(input()))
maxNum = max(cmd)
flag = [True for i in range(maxNum+1)]
for i in range(2,int(maxNum**(0.5))+1) :
    if flag[i] :
        tmp = i + i
        while tmp <= maxNum :
            flag[tmp] = False
            tmp += i
flag[0],flag[1] = False,False

def check1(num) :
    tmp1 = copy.deepcopy(num)
    while tmp1%3 == 0 :
        tmp1 //= 3
    count = 0
    while tmp1%2 == 0 :
        tmp1 //= 2
        count += 1
    if count == 1 :
        return False
    tmp2 = copy.deepcopy(num)
    count = 0
    while tmp2%2 == 0 :
        tmp2 //= 2
    while tmp2%3 == 0 :
        tmp2 //= 3
        count += 1
    if count == 1 :
        return False
    return True
def check2(num) :
    if flag[num] == False :
        return True
    return False
def check3(num) :
    tmp1 = copy.deepcopy(num)
    tmp2 = copy.deepcopy(num)
    while tmp1 % 2 == 0 :
        tmp1 //= 2 
    if flag[tmp1] == True and tmp1 != 3:
        return False
    while tmp2 % 3 == 0 :
        tmp2 //= 3 
    if flag[tmp2] == True and tmp2 != 2:
        return False
    return True

for item in cmd :
    if check2(item) :
        if check3(item) :
            if check1(item) :
                print('yes')
            else :
                print('no')
        else :
            print('no')
    else :
        print('no')

————————————————————————————

写在最后 : 一年一次蓝桥杯省赛就这样结束了 我相信认真准备的人一定会有所收获 如果我运气够好 我们国赛再见!🌹🌹🌹

 文章来源地址https://www.toymoban.com/news/detail-408645.html

到了这里,关于第十三届蓝桥杯大学A组题解(Python)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式省赛客观题以及详细题解

    题解:   概念题。 MCO引脚,是单片机对外提供时钟的引脚。 HSE,高速外部时钟信号,时钟源由外部晶体/陶瓷谐振器与外部时钟; HSI,高速的内部时钟,由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入; SYSCLK,是系统时钟; HSE/2,对高速外部时钟进

    2023年04月16日
    浏览(139)
  • 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛程序设计试题以及详细题解

      本届国赛试题主要包含 LCD 、 LED 、 按键 、 EEPROM 、 串口 、 模拟电压输入 、 脉冲输入输出 七大部分,其中前面三个部分是蓝桥杯嵌入式的“亲儿子”(必考部分),而剩下的四个部分都为“干儿子”(考频相对较高)。   相对于本届省赛两套试题:   本套试题 串口数

    2024年02月02日
    浏览(84)
  • 第十三届蓝桥杯国赛 Web 前端组(大学组) 真题练习及答案解析

    考点:数组方法 思路:利用splice()方法 考点:flex布局 思路:照着写就行 考点: DOM 操作 思路:1 先做需求:隐藏开始按钮,方格上的图片显示后又隐藏。 2 再做第一次点击图片翻转效果。 3 做第二次点击的逻辑判断,若水果相同则,进行消除,加分操作,水果不同,进行隐

    2024年02月06日
    浏览(57)
  • 第十三届蓝桥杯省赛与国赛真题题解大汇总(十四届参赛者必备)

      大家好,我是执梗。本文汇总了我写的第十三届蓝桥杯所有省赛真题与国赛真题,会针对每道题打出我自己的难度评星⭐️,也会给出每道题的算法标签,帮助大家更有针对性的去学习和准备,当然许多题目由于难度或时间的原因暂未更新,如果有不懂的问题也可以在评

    2024年02月11日
    浏览(75)
  • 第十三届蓝桥杯省赛Python 组

    本次所有代码均存放于仓库: Github :GxlHus/Algorithm at 蓝桥杯 (github.com) Gitee :Algorithm: 算法解题 - Gitee.com 原题目:第十三届蓝桥杯大赛软件赛省赛_PB.pdf · AYO/Algorithm - Gitee.com 本次省赛题目总体来说不难,总体质量比较高,尤其是后边几道题,虽然能轻易做出来,但是想跑通所

    2023年04月17日
    浏览(44)
  • 第十三届蓝桥杯省赛 python B组复盘

    😎🥳😎 备战蓝桥杯第一弹–复盘 思路 (当时第一次参加蓝桥杯,当时现场心里小鹿乱撞,用排序输出了还每个字母数数验证一番(滑稽)) 字符串转列表 列表排序 列表转字符串 代码 思路 当时在现场程序没跑出来 想着那个数取余2余1,取余4余1,取余8余1可以只看取余8余1的,

    2023年04月20日
    浏览(41)
  • 试题G:全排列的价值(第十三届蓝桥杯省赛Python B组)

      首先,我们先重新排列一下题目所给的例子 我们将每种排列的每个元素价值单独拿出来看看(矩阵1) 不难发现

    2023年04月15日
    浏览(38)
  • 第十三届蓝桥杯经验分享

    当时报名参加蓝桥杯,是为了以后工作能有个证吧,但苦于大三 没有时间准备 ,就这样轻装上阵, 一点儿没复习 , 真题也没做,练习也没整 , 一篇经验贴也没仔细看 ,结果还拿了个省三,不知道是不是参与奖哈哈。但作为过来人,还是有点经验的,特来分享 ヽ(✿゚▽゚

    2024年02月15日
    浏览(50)
  • 十三届蓝桥杯JAVA B组国赛部分题解

    大学总共参加了三届蓝桥杯,这应该是我最后一次参加蓝桥杯了,再写一篇题解算是给自己的业余竞赛结个尾。我的题解肯定不是最好的,甚至有许多错误,能给大家提供下思路就行。 思路:模拟下时钟就行,签到题 答案:502-8=494(由于匀速运动,59分59秒到0分0秒实际算一次

    2024年02月08日
    浏览(47)
  • 蓝桥杯第十三届决赛真题-左移右移

    题目链接 问题描述 小蓝有一个长度为 N 的数组, 初始时从左到右依次是 1,2,3, …N 。 之后小蓝对这个数组进行了 M 次操作, 每次操作可能是以下 2 种之一: 左移 x, 即把 x 移动到最左边。 右移 x, 即把 x 移动到最右边。 请你回答经过 M 次操作之后, 数组从左到右每个数是多少? 输

    2023年04月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包