2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - H.移动距离
移動(dòng)距離
X星球居民小區(qū)的樓房全是一樣的,并且按矩陣樣式排列。
其樓房的編號(hào)為1,2,3…
當(dāng)排滿一行時(shí),從下一行相鄰的樓往反方向排號(hào)。
比如:當(dāng)小區(qū)排號(hào)寬度為6時(shí),開始情形如下:
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 …
我們的問題是:已知了兩個(gè)樓號(hào)m和n,需要求出它們之間的最短移動(dòng)距離(不能斜線方向移動(dòng))
輸入為3個(gè)整數(shù)w m n,空格分開,都在1到10000范圍內(nèi)。
w為排號(hào)寬度,m,n為待計(jì)算的樓號(hào)。
要求輸出一個(gè)整數(shù),表示m n 兩樓間最短移動(dòng)距離。
例如:
用戶輸入:
6 8 2
則,程序應(yīng)該輸出:
4
再例如:
用戶輸入:
4 7 20
則,程序應(yīng)該輸出:
5
資源約定:
峰值內(nèi)存消耗 < 256M
CPU消耗 < 1000ms
請(qǐng)嚴(yán)格按要求輸出,不要畫蛇添足地打印類似:“請(qǐng)您輸入…” 的多余內(nèi)容。
所有代碼放在同一個(gè)源文件中,調(diào)試通過后,拷貝提交該源碼。
注意: main函數(shù)需要返回0
注意: 只使用ANSI C/ANSI C++ 標(biāo)準(zhǔn),不要調(diào)用依賴于編譯環(huán)境或操作系統(tǒng)的特殊函數(shù)。
注意: 所有依賴的函數(shù)必須明確地在源文件中 #include , 不能通過工程設(shè)置而省略常用頭文件。
提交時(shí),注意選擇所期望的編譯器類型。
Code
Python
if __name__ == '__main__':idx, x, y = 1, 0, 0 # 表示當(dāng)前到達(dá)的樓號(hào)和坐標(biāo)left_to_right = Truew, m, n = map(int, input().split())mx, my, nx, ny = 0, 0, 0, 0while idx < max(m, n) + 1:if idx == m: # 記錄 m 號(hào)樓的坐標(biāo)mx, my = x, yif idx == n: # 記錄 n 號(hào)樓的坐標(biāo)nx, ny = x, yy = y + 1 if left_to_right else y - 1if idx % w == 0:x += 1left_to_right = not left_to_righty = y + 1 if left_to_right else y - 1idx += 1print(abs(mx - nx) + abs(my - ny))總結(jié)
以上是生活随笔為你收集整理的2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - H.移动距离的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2015年第六届蓝桥杯 - 省赛 - C
- 下一篇: 2015年第六届蓝桥杯 - 省赛 - C