第六届蓝桥杯--奇妙的数字和移动距离
奇妙的數(shù)字
題目描述
小明發(fā)現(xiàn)了一個奇妙的數(shù)字。它的平方和立方正好把0~9的10個數(shù)字每個用且只用了一次。
你能猜出這個數(shù)字是多少嗎?
也可以先找出第一個使temp長度為十的數(shù),即直接令num為47
num = 47 while 1:temp = (str(num**2)+str(num**3))for i in temp:if temp.count(i) != 1:breakelse:print(num)breaknum += 1答案:69
移動距離
題目描述:
X星球居民小區(qū)的樓房全是一樣的,并且按矩陣樣式排列。
其樓房的編號為 1,2,3…
當(dāng)排滿一行時,從下一行相鄰的樓往反方向排號。
比如:當(dāng)小區(qū)排號寬度為 6 時,開始情形如下:
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 …
我們的問題是:已知了兩個樓號 m和 n,需要求出它們之間的最短移動距離(不能斜線方向移動)。
輸入格式
輸入共一行,包含三個整數(shù) w,m,n,w 為排號寬度,m,n為待計算的樓號。
輸出格式
輸出一個整數(shù),表示 m,n兩樓間最短移動距離。
數(shù)據(jù)范圍
1≤w,m,n≤10000
?
式s解析:m和n減一,是因為當(dāng)m或n剛好為w的倍數(shù)時,會被歸入下一列,所以減一后再求整商,在相減求絕對值(因為不知道m(xù)和n的大小),即可得兩樓的行距
奇數(shù)時:
式ans解析:(min(m,n)-1)//w+1是樓號小的數(shù)的行,再乘以牌號寬度w,就是改行最大的數(shù),然后減去樓號小的數(shù),再乘2加1加上牌號小的數(shù),即為該數(shù)正下方的高一行數(shù),所以據(jù)牌號大的樓的行數(shù)減一,所以再加上(s-1)[即現(xiàn)在所差行數(shù)]*w,就得到了樓號小的正下方和樓號大的同行的數(shù),該數(shù)與樓號大的數(shù)相減的絕對值即為在該行所走的最短距離,最后加上兩棟行差距s,即為結(jié)果。
樓號小的那行最大的數(shù):w*((min(m, n)-1)//w+1) 樓號下的數(shù)比它下面的數(shù)小的值:(w*((min(m, n)-1)//w+1)-min(m, n))*2+1 樓號小正下方在大樓號的行上的數(shù):min(m, n)+(s-1)*w+(w*((min(m, n)-1)//w+1)-min(m, n))*2+1 樓號小的數(shù)豎直向走到樓號大的行數(shù)所需步數(shù):s 到同一行后所需走的步數(shù):abs(min(m, n)+(s-1)*w+(w*((min(m, n)-1)//w+1)-min(m, n))*2+1-max(m, n))偶數(shù)時:
min(m, n) + s * w 就得到了小樓號正下方與大樓號同一行的數(shù),兩數(shù)相減取絕對值,就為在該行所需步數(shù),在加上從上到下的步數(shù)s,就為結(jié)果。
總結(jié)
以上是生活随笔為你收集整理的第六届蓝桥杯--奇妙的数字和移动距离的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝桥杯省赛2015年——奇妙的数字
- 下一篇: 谷歌ai人工智能叫什么_为Google产