試題 演算法提高 奧運會開幕式

2021-10-23 05:35:05 字數 2337 閱讀 1099

思路:環形鍊錶,可以用,也可以用單鏈表,只要將彈出的再加入單鏈表的尾部即可,詳看**。

資源限制

時間限制:1.0s 記憶體限制:256.0mb

問題描述

學校給高一(三)班分配了乙個名額,去參加奧運會的開幕式。每個人都爭著要去,可是名額只有乙個,怎麼辦?

班長想出了乙個辦法,讓班上的所有同學(共有n個同學)圍成一圈,按照順時針方向進行編號。

然後隨便選定乙個數m,並且從1號同學開始按照順時針方向依次報數,1,2

, …, m,凡報到m的同學,都要主動退出圈子。

然後不停地按順時針方向逐一讓報出m者出圈,最後剩下的那個人就是去參加開幕式的人。

要求:用環形鍊錶的方法來求解。所謂環形鍊錶,即對於鍊錶尾結點,其next指標又指向了鍊錶的首結點。基本思路是先建立乙個環形鍊錶,模擬眾同學圍成一圈的情形。然後進入迴圈淘汰環節,模擬從1到m報數,每次讓一位同學(結點)退出圈子。

輸入格式:輸入只有一行,包括兩個整數n和m,其中n和 m的含義如上所述。

輸出格式:輸出只有乙個整數,即參加開幕式的那個人的編號。

輸入輸出樣例

樣例輸入83

樣例輸出

7

**:

class

linkedqueue

:class

_node

: __slots__ =

'_element'

,'_next'

def__init__

(self,element,

next):

self._element = element

self._next =

next

def__init__

(self)

: self._head =

none

self._tail =

none

self._size =

0def

size

(self)

:# 鍊錶的大小

return self._size

defisempty

(self)

:# 鍊錶是否為空

return self._size ==

0def

top(self)

:# 鍊錶頭部的值

if self._size ==0:

return

'error'

return self._head._element

defenqueue

(self,e)

:# 存入鍊錶

newest = self._node(e,

none

)if self._size ==0:

self._head = newest

else

: self._tail._next = newest

self._tail = newest

self._size +=

1def

dequeue

(self)

:# 鍊錶出

if self._size ==0:

return

'error'

temp = self._head._element

self._head = self._head._next

self._size -=

1if self._size ==0:

self._tail =

none

return temp

deffun

(n,m)

: s = linkedqueue(

)# 例項化

for i in

range(1

,n+1):

s.enqueue(i)

# 存入鍊錶

while s.size(

)>1:

# 每次迴圈將第m個數彈出,其餘數存入鍊錶尾部

for i in

range(1

,m):

s.enqueue(s.dequeue())

s.dequeue(

)return s.dequeue(

)if __name__ ==

"__main__"

: n,m =

map(

int,

input()

.split())

# n 總人數; 報到 m 的出局

print

(fun(n,m)

)

藍橋杯 演算法提高 奧運會開幕式

問題描述 學校給高一 三 班分配了乙個名額,去參加奧運會的開幕式。每個人都爭著要去,可是名額只有乙個,怎麼辦?班長想出了乙個辦法,讓班上的所有同學 共有n個同學 圍成一圈,按照順時針方向進行編號。然後隨便選定乙個數m,並且從1號同學開始按照順時針方向依次報數,1,2,m,凡報到m的同學,都要主動退出...

藍橋杯 C 奧運會開幕式

題目閱覽 學校給高一 三 班分配了乙個名額,去參加奧運會的開幕式。每個人都爭著要去,可是名額只有乙個,怎麼辦?班長想出了乙個辦法,讓班上的所有同學 共有n個同學 圍成一圈,按照順時針方向進行編號。然後隨便選定乙個數m,並且從1號同學開始按照順時針方向依次報數,1,2,m,凡報到m的同學,都要主動退出...

藍橋杯 ADV 296 演算法提高 奧運會開幕式

演算法提高 奧運會開幕式 時間限制 1.0s 記憶體限制 256.0mb 問題描述 學校給高一 三 班分配了乙個名額,去參加奧運會的開幕式。每個人都爭著要去,可是名額只有乙個,怎麼辦?班長想出了乙個辦法,讓班上的所有同學 共有n個同學 圍成一圈,按照順時針方向進行編號。然後隨便選定乙個數m,並且從1...