python實現 201712 2 遊戲

2021-10-24 09:33:12 字數 1970 閱讀 5186

試題編號: 201712-2

試題名稱: 遊戲

時間限制: 1.0s

記憶體限制: 256.0mb

問題描述有n個小朋友圍成一圈玩遊戲,小朋友從1至n編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,……,1號小朋友坐在n號小朋友的順時針方向。

遊戲開始,從1號小朋友開始順時針報數,接下來每個小朋友的報數是上乙個小朋友報的數加1。若乙個小朋友報的數為k的倍數或其末位數(即數的個位)為k,則該小朋友被淘汰出局,不再參加以後的報數。當遊戲中只剩下乙個小朋友時,該小朋友獲勝。

例如,當n=5, k=2時:

1號小朋友報數1;

2號小朋友報數2淘汰;

3號小朋友報數3;

4號小朋友報數4淘汰;

5號小朋友報數5;

1號小朋友報數6淘汰;

3號小朋友報數7;

5號小朋友報數8淘汰;

3號小朋友獲勝。

給定n和k,請問最後獲勝的小朋友編號為多少?

輸入格式

輸入一行,包括兩個整數n和k,意義如題目所述。

輸出格式

輸出一行,包含乙個整數,表示獲勝的小朋友編號。

樣例輸入

5 2樣例輸出

3樣例輸入

7 3樣例輸出

4資料規模和約定

對於所有評測用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。

n,k=

map(

int,

input()

.split())

count=

0#累計淘汰小朋友的人數

num=

1#報數

child=

#小朋友報數資料的陣列

for i in

range

(n):

child+=

[[num,

true]]

#二維列表儲存資料

num+=1if

(child[i][0

]%k==

0or child[i][0

]%10==k)

and count!=n-1:

#符合條件,將true設為false,作為標記表示淘汰

child[i][1

]=false

count+=

1#繼續判斷沒被淘汰的小朋友,直到剩下乙個小朋友

while

(count

:#小朋友還沒淘汰到剩下乙個,繼續判斷

for i in

range

(n):

if child[i][1

]==true

and count!=n-1:

#上一輪沒被淘汰的繼續判斷

child[i][0

]=num

num+=1if

(child[i][0

]% k ==

0or child[i][0

]%10== k)

and count != n -1:

# 符合條件,將true設為false,作為標記表示淘汰

child[i][1

]=false

count +=

1for j in

range

(n):

if child[j][1

]==true

:print

(j+1

)#輸出編號要在下標加1

ccf 201712 2 遊戲 Python實現

問題描述 試題編號 201712 2 試題名稱 遊戲時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 有n個小朋友圍成一圈玩遊戲,小朋友從1至n 編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,1號小朋友坐在n 號小朋友的順時針方向。遊戲開始,從1...

CCF201712 2 遊戲 (python語言)

試題編號 201712 2 試題名稱 遊戲時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 有n個小朋友圍成一圈玩遊戲,小朋友從1至n編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,1號小朋友坐在n號小朋友的順時針方向。遊戲開始,從1號小朋友開始順...

201712 2 遊戲(模擬)

include include include using namespace std intmain 方法一 使用標誌位 單獨設定偏移量offset,而不用報的數確定下標offset的原因 報的數num增加是有條件的,而偏移量是在每次迴圈遍歷的過程中都要無條件增加的 int num 0 int c...