日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第六届蓝桥杯--奇妙的数字和移动距离

發(fā)布時間:2024/8/1 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第六届蓝桥杯--奇妙的数字和移动距离 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

奇妙的數(shù)字

題目描述

小明發(fā)現(xiàn)了一個奇妙的數(shù)字。它的平方和立方正好把0~9的10個數(shù)字每個用且只用了一次。
你能猜出這個數(shù)字是多少嗎?

num = 1 while 1:temp = (str(num**2)+str(num**3)) # 將一個數(shù)的平方和立方轉(zhuǎn)化為字符串相加if len(temp) == 10: # 因為0-9共10個數(shù)for i in temp:if temp.count(i) != 1: # 檢查每位上的數(shù)唯不唯一break # 不唯一不符else: # 符合要求就輸出,并結(jié)束while循環(huán)print(num)breaknum += 1

也可以先找出第一個使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
?

w = int(input("請輸入牌號寬度:")) m = int(input("請輸入m編號:")) n = int(input("請輸入n編號:")) s = abs((m-1)//w-(n-1)//w) # l為m和n兩棟樓行差距 # 因為樓號為蛇形排列,所以需要分奇偶,分別求 if s % 2 == 1: # 為奇時ans = s + abs(min(m, n)+(s-1)*w+(w*((min(m, n)-1)//w+1)-min(m, n))*2+1-max(m, n)) else: # 為偶時ans = s + abs(min(m, n)+s*w-max(m, n)) print(ans)

式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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。