章魚吃貝殼問題

今天,在某Python群里宅倒,看到有一個問題,看似簡單屯耸,其實挺難的拐迁。題目如下:

小易總是感覺饑餓,所以作為章魚的小易經(jīng)常出去尋找貝殼吃疗绣。
最開始线召,小易在一個初始位置x_0。
對于小易所處的當前位置x多矮,它只能通過神秘的力量移動到4x+3或者8x+7缓淹。
因為使用神秘力量要耗費太多的體力哈打,所以它只能使用神秘力量最多100,000次。貝殼總生長在能被1,000,000,007整除的位置(比如:位置0讯壶,位置1,000,000,007料仗,位置2,000,000,014等)。
小易需要你幫忙計算最少需要使用多少次神秘力量就能吃到貝殼伏蚊。

分析

設小易當前位置為x_n立轧,使用神秘力量移動以后的位置為x_(n+1)

兩個步長函數(shù)

首先對這兩個步長函數(shù)作一下變形:

1.jpg

由此可得


2.jpg

在看下面的分析之前,需要理解一個知識躏吊,這里簡單舉例說明

第一種走法:
4x+3氛改,8x+7,4x+3
第二種走法:
4x+3比伏,4x+3胜卤,8x+7
是完全一樣的,

這里我想說明的是赁项,從初始位置開始葛躏,小易到達的最終位置只跟4x+3的次數(shù)和8x+7的次數(shù)有關系,與先走哪個沒有關系

假設小易到達目標位置

所需的4x+3的次數(shù)為m次肤舞,此時到達的位置為x_m

3.jpg

所需的8x+7的次數(shù)為n次紫新,此時的位置為目標位置x_(m+n)

4.jpg

將上述兩個式子寫成一個

5.jpg

由此可知,4x+3所需次數(shù)m李剖,8x+7所需次數(shù)n芒率,初始位置x_0,最終位置x_(m+n)滿足如下關系

6.jpg
m 為4x+3的次數(shù)篙顺, n 為8x+7的次數(shù)偶芍, x_0 為初始位置,x_(m+n)為最終的目標位置

而且由題目中的條件德玫,小易應該用最少的次數(shù)匪蟀,因此綜合上述分析,本題實際為如下的最優(yōu)化問題

7.jpg

由上述的分析宰僧,可知

8.jpg

只有當該值為一個 整數(shù)材彪,即

(x_(m + n) + 1) / (x_0 + 1) = 2的某個指數(shù)冪

的時候,小易才可以從初始位置琴儿,到達目標位置段化,否則永遠不可能到達。因此這也是題目中設置一個給定次數(shù)100000造成,判定程序結束的條件显熏。

至此,從數(shù)學的角度本題已經(jīng)分析完了晒屎,剩下的就是 擼代碼喘蟆。

import random
from math import log
import re
x0 = random.randint(1, 1000000006)
x0 = 125000000
k = 1
target = 1000000007

def get_m_n(sum, k):
    m_n = []
    m_max = sum // 2
    n_max = sum // 3
    min_c = m_max + n_max
    for n in range(n_max + 1):
        m = (sum - 3 * n) // 2
        if 2 * m + 3 * n == sum:
            if m + n <= min_c:
                m_n.append((m, n))
                min_c = m + n
    # print(m_n)
    print(f'初始位置為:{x0}缓升,目標位置為:{k}倍距離,{k * target}')
    print(f'最少次數(shù)為:{min_c}')
    for i, j in m_n:
        print(f'4x+3走{i}次蕴轨,8x+7走{j}次')
        
while 1:
    t = k * target
    sum = log((t + 1) / (x0 + 1), 2)
    # print(sum)
    if sum >= 2.0 and re.findall('\d+\.0$', str(sum)):
        get_m_n(int(sum), k)
        break
    elif k == 100000:
        print('沒有找到')
        break
    k += 1
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末港谊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子尺棋,更是在濱河造成了極大的恐慌封锉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膘螟,死亡現(xiàn)場離奇詭異成福,居然都是意外死亡,警方通過查閱死者的電腦和手機荆残,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門奴艾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人内斯,你說我怎么就攤上這事蕴潦。” “怎么了俘闯?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵潭苞,是天一觀的道長。 經(jīng)常有香客問我真朗,道長此疹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任遮婶,我火速辦了婚禮蝗碎,結果婚禮上,老公的妹妹穿的比我還像新娘旗扑。我一直安慰自己蹦骑,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布臀防。 她就那樣靜靜地躺著眠菇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袱衷。 梳的紋絲不亂的頭發(fā)上琼锋,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音祟昭,去河邊找鬼。 笑死怖侦,一個胖子當著我的面吹牛篡悟,可吹牛的內(nèi)容都是我干的谜叹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼搬葬,長吁一口氣:“原來是場噩夢啊……” “哼荷腊!你這毒婦竟也來了?” 一聲冷哼從身側響起急凰,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤女仰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抡锈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疾忍,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年床三,在試婚紗的時候發(fā)現(xiàn)自己被綠了一罩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡撇簿,死狀恐怖聂渊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情四瘫,我是刑警寧澤汉嗽,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站找蜜,受9級特大地震影響饼暑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锹杈,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一撵孤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竭望,春花似錦邪码、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旧烧,卻和暖如春影钉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掘剪。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工平委, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人夺谁。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓廉赔,卻偏偏與公主長得像肉微,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜡塌,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容