经过二十天的准备,蓝桥杯拿到了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==