今天接着做一期蓝桥的填空题吧
先来看看我准备的暴力写法吧,太傻吧了。
n=2021041820210418
b=set()
for i in range(1,n+1):
for j in range(1,n+1):
for k in range(1,n+1):
if i*j*k==n:
b.add((i,j,k))
print(len(b))
这要不超时,天理难容....看了题解以后,不感叹我是个傻子...
n=2021041820210418 b=set() a=[]#先建立一个空列表,把有可能是i,j,k的元素放入,这样减轻了很多时间空间,也不会超时了 for l in range(1,int(n**0.5)+1): if n%l==0: a.append(l) a.append(n/l) a=set(a) a=list(a) for i in a: for j in a: for k in a: if i*j*k==n: b.add((i,j,k)) print(len(b))
嗯,本来是想都做填空题的,我发现后面的算法没学到,根本不会....就再加一道编程吧
这个题python的优势就在于time模块,贼好用,所以给各位哥哥姐姐一点意见,参加蓝桥杯的话,一定要把python的各个模块给过一遍,会有意外惊喜的哦
import time
a=eval(input())
t=int(a/1000)
p=time.gmtime(t)
h=str(p[3]) if p[3]>=10 else "0"+str(p[3])
m=str(p[4]) if p[4]>=10 else "0"+str(p[4])
s=str(p[5]) if p[5]>=10 else "0"+str(p[5])
print(f"{h}:{m}:{s}")
今天就到这里吧,我去学算法啦!!!