AcWing 1219. 移动距离(python 3)
原题链接
简单
作者:
乖乖二号
,
2021-04-09 11:16:55
,
所有人可见
,
阅读 274
w, m, n = map(int,input().split())
#把数组弄出来
a = []
for i in range(10000 // w + 10):
b = []
for j in range(1 + w * i, w * (i + 1) + 1):
b.append(j)
if i % 2 != 0:
b = b[::-1]
a.append(b)
#规定m为大数
if m < n:
m, n = n, m
#确定m和n所在的行
mp = (m - 1) // w
np = (n - 1) // w
#确定大数所在的列,因为小数不动,所以不考虑小数
fm = 0
for i in range(w):
if a[mp][i] == m:
fm = i
#res1记录移动到同一行所需的次数
res1 = 0
t = True
while t:
if mp == np:
break
mp -= 1
res1 += 1
#res2记录同一行内所需的步数
res2 = abs(a[mp][fm] - n)
res = res1 + res2
print(res)