問題描述:
X星球居民小區(qū)的樓房全是一樣的新荤,并且按矩陣樣式排列荧嵌。其樓房的編號為1,2,3...
當(dāng)排滿一行時(shí),從下一行相鄰的樓往反方向排號具则。
比如:當(dāng)小區(qū)排號寬度為6時(shí)即纲,開始情形如下:
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 .....
我們的問題是:已知了兩個(gè)樓號m和n,需要求出它們之間的最短移動距離(不能斜線方向移動)
輸入格式:
輸入為3個(gè)整數(shù)w m n博肋,空格分開低斋,都在1到10000范圍內(nèi)
w為排號寬度,m,n為待計(jì)算的樓號匪凡。
輸出格式:
要求輸出一個(gè)整數(shù)膊畴,表示m n 兩樓間最短移動距離。
例如:
用戶輸入:
6 8 2
程序應(yīng)該輸出:
4
再例如:
用戶輸入:
4 7 20
程序應(yīng)該輸出:
5
資源約定:
峰值內(nèi)存消耗 < 256M
CPU消耗 < 1000ms
請嚴(yán)格按要求輸出病游,不要畫蛇添足地打印類似:“請您輸入...” 的多余內(nèi)容唇跨。
代碼:
def count_row(w, num):
return num // w if num % w != 0 else num // w - 1
def count_colum(w, num, r):
if r % 2 == 0:
colum = num % w - 1 if num % w != 0 else w - 1
else:
colum = w - num % w if num % w != 0 else 0
return colum
def run():
w, m, n = (int(i) for i in input().split())
x1 = count_row(w, m)
y1 = count_colum(w, m, x1)
x2 = count_row(w, n)
y2 = count_colum(w, n, x2)
print(abs(x1 - x2) + abs(y1 - y2))
run()