我用到了一个O(n三次方)的floyd算法
三层循环都是遍历1到2021
那这样子是不是几个小时都跑不出来
def lcm(a,b):
s=a*b
while b:
a,b=b,a%b
return int(s/a)
graph=[[float('inf')]*2022 for i in range(2022)]
for i in range(1,2022):#[inf,inf,inf...],赋予边权
try:
if i<=2000:
for j in range(i,i+22):
graph[i][j]=lcm(i,j)
else:
for j in range(i,2022):
graph[i][j]=lcm(i,j)
except:
print(i,j)
break
for i in range(1,2022):
for j in range(1,2022):
graph[i][j]=max(graph[i][j],graph[j][i])
for k in range(1,2022):
for i in range(1,2022):
for j in range(1,2022):
graph[i][j]=min(graph[i][k],graph[k][j])
print(graph[1][2021])
不是啊,计算机的计算速度很快的,要不多久就跑完了