蓝桥填空2

今天接着做一期蓝桥的填空题吧

蓝桥填空2_第1张图片

先来看看我准备的暴力写法吧,太傻吧了。

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}")

 今天就到这里吧,我去学算法啦!!!

你可能感兴趣的:(蓝桥杯,算法,python)