騰訊提前批筆試題 1 圓桌會議

2021-09-12 08:53:54 字數 1633 閱讀 3080

有n個人圍坐在乙個圓桌周圍進行一場圓桌會議。會議開始前從第s個人開始報數,數到第m的人就出列退出會議,然後從出列的下乙個人重新開始報數,數到第m的人又出列,…,如此重複直到所有人全部出列為止。現在希望你能夠求出按退出會議次序得到的人員的序號序列。

輸入描述:三個正整數n, s, m,均小於10000。

輸出描述:退出會議次序序號,一行乙個。

每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。hf作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成乙個大圈。然後,他隨機指定乙個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱首歌,然後可以在禮品箱中任意的挑選禮物,並且不再回到圈中,從他的下乙個小朋友開始,繼續0…m-1報數…這樣下去…直到剩下最後乙個小朋友,可以不用表演,並且拿到牛客名貴的「名偵探柯南」典藏版(名額有限哦)。請你試著想下,哪個小朋友會得到這份禮品呢?(注:小朋友的編號是從0到n-1)

0,1,…,n-1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。(約瑟夫環問題)

時間複雜度o(mn),空間複雜度o(n)

定義乙個關於n和m的方程f(m, n),表示每次在n個數字(0,1,…,n-1)中刪除第m個數字後剩下的數字。

第乙個被刪除的數字是(m-1)%n,設為k。

剩下的n-1個數字為:0,1,…,k-1,k+1,…,n-1;將下次起始的k+1排在最前面得到k+1,…,n-1,0,1,…,k-1,該序列最後剩下的數字也是關於n和m的函式,但因序列的起始位置不同而與最初的序列不同,所以用方程記為g(n-1,m)。

顯然,兩個序列刪除後剩餘的數字是一樣的,即f(n,m)=g(n-1,m)。

將k+1,…,n-1,0,1,…,k-1對映為0,…,n-2的序列,對映關係記為p,則p(x)=(x-k-1)%n,逆對映p^(-1)(x)=(x+k+1)%n。

對映後的序列與最初系列有相同的形式,可得g(n-1,m)=p^(-1)[f(n-1,m)]=[f(n-1,m)+k+1]%n

因g(n-1,m)=f(n,m),k=(m-1)%n,可得f(n,m)=[f(n-1,m)+(m-1)%n+1]%n書上得到的最後的遞推公式為f(n,m)=[f(n-1,m)+m]%n,但是目前還沒有想通轉化方法。

const

lastremaining_solution

=(n, m)

=>

return result

};

時間複雜度o(n),空間複雜度o(1)

由於需要知道過程的量,因此只能需求複雜度更高的方法,記錄過程,提供一種遞迴的方法的結果。

const a =10;

const b =5;

const c =

3% a;

const

main

=(n, m, s)

=>

helper

(s -1)

; console.

log(result)

;function

helper

(start)};

main

(a, b, c)

;

1214 圓桌會議

problem description hdu acm集訓隊的隊員在暑假集訓時經常要討論自己在做題中遇到的問題.每當面臨自己解決不了的問題時,他們就會圍坐在一張圓形的桌子旁進行交流,經過大家的討論後一般沒有解決不了的問題,這也只有hdu acm集訓隊特有的圓桌會議,有一天你也可以進來體會一下哦 在一...

HDU 1214圓桌會議

description hdu acm集訓隊的隊員在暑假集訓時經常要討論自己在做題中遇到的問題.每當面臨自己解決不了的問題時,他們就會圍坐在一張圓形的桌子旁進行交流,經過大家的討論後一般沒有解決不了的問題,這也只有hdu acm集訓隊特有的圓桌會議,有一天你也可以進來體會一下哦 在一天在討論的時候,...

hdu 1124 圓桌會議

主題思想 數學題,給乙個串數字組成乙個環,12345 n 經過有限次相鄰作為的對換,變成 1,n,n 1,n 2,2 如果是乙個直線,不是乙個環,根據直線長度n 需要的次數為n 1 n 2 n 3 1.為 n n 1 2 把乙個環盡可能分成長度相等的兩段,分別計算兩段直線的次數,和就是最小的操作。參...