目录
1.找素数 730
from math import *
def isprime(x):
if x==1:
return False
for i in range(2,int(sqrt(x))+1):
if x%i==0:
return False
return True
ans=0
for i in range(2,10000000):
if isprime(i):
ans+=1
if ans==100002:
print(i)
2.大胖子走迷宫 第十届决赛
我写这个能得90分,第一个超时啦
from queue import *
n,k=map(int,input().split())
N=305
s=[]
vis=[[0 for i in range(N)]for j in range(N)]
dir=[(0,1),(-1,0),(1,0),(0,-1)]
for i in range(n):
l=input()
l=list(l)
s.append(l)
def f(m):
if m<k:
return 2
elif m<2*k:
return 1
else:
return 0
def check(x,y,len):
for i in range(x-len,x+len+1):
for j in range(y-len,y+len+1):
if s[i][j]=='*':
return False
break
return True
def bfs():
q=Queue()
q.put((2,2,0,2))
vis[2][2]=1
while not q.empty():
p=q.get()
len=p[3]
x=p[0]
y=p[1]
num=p[2]
if x==n-3 and y==n-3:
return num
if len!=0:
q.put((x,y,num+1,f(num+1)))
for i in range(4):
nx=x+dir[i][0]
ny=y+dir[i][1]
if vis[nx][ny]==1:
continue
if nx-len<0 or nx+len>=n or ny-len<0 or ny+len>=n:
continue
if check(nx,ny,len)==False:
continue
q.put((nx,ny,p[2]+1,f(p[2]+1)))
vis[nx][ny]=1
print(bfs())