2022蓝桥杯 Python研究生组

经过二十天的准备,蓝桥杯拿到了Python研究生组省二,也算是一个还可以的结果了。
今年由于疫情,我这边改成了线上比赛,题型也变了,由原来的五个填空+五个编程,改成了两个填空+八个编程。
也是到了邻近比赛前两天才知道,不过也没啥影响。

这里先写一点经验吧,准备参加Python组的小伙伴一定要注意,时间复杂度,时间复杂度,时间复杂度,Python这个语言比C语言、java要慢很多,也就是说相同的算法,Python跑出来所需要的时间比它们都多,就会很容易出现超时的现象,一般这些题给出的数值的范围都会很大,如果不考虑时间复杂度的问题,那么一定会有2-8个样例通过不了,这就很惨了呀。

一个题看了两遍还是没有思路,就可以跳过看下面的了,不要过度耽误时间,下面的题有可能更简单。

我觉得主要是解决问题的逻辑吧,平时练题的时候着重了解解题思路,还有时间复杂度。如果不是有特别高的要求,就是拿个省一呀、国奖呀这种,我觉得平时不用刷特别难的题,看一些一般的题就够了,省二省三还是很简单的,省一往上就需要一定的功力了呀,大家按需来吧。

下面放一下我比赛的时候做的几个编程题吧
如果有错误欢迎大家指正。
首先是两个填空题,第一个填空题我已经忘了当时填的什么了,但是不难,通过找规律可以拿到结果。
第二个填空题就比较难搞了
在这里插入图片描述
看似给了很多条件,但是这个数的范围特别大,暴力无法得到结果,只能找到它更深的关系,降低算法的时间复杂度才能解决这个问题。我当时就是按照这些条件,找了一些简单的规律,写了一个暴力的程序,但是由于这个数的范围实在太大,等我下一题都想出来怎么做了,它还没跑出来,然后我就放弃了。

接下来是第一个编程题 质因数个数
在这里插入图片描述
我当时的答案是

def zhishu(b):
    for i in range(2,b,1):
        if b%i==0:
            return 1
    return 0

if __name__=='__main__':
    n=int(input())
    summ=0
    a=0
    k=(n//2)+1
    for i in range(2,k,1):
        if n%i==0:
            a=int(n/i)
            
            m=zhishu(i)
            if a>i:
                p=zhishu(a)
                if p==0:
                    summ+=1
                    print(a)
            if m==
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值