ccf 201712 2 遊戲 Python實現

2022-10-10 12:12:10 字數 2407 閱讀 8986

問題描述

試題編號:

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。

用到兩個列表和乙個計數器。計數器用來記錄當前小朋友的報數。第乙個列表用來裝沒有報數的小孩。第二個列表用來裝報數並且不是k的整數倍的小孩。當第乙個列表迴圈完一遍以後,把第二個列表重新複製給第乙個列表。然後第二個列表置空。然後迴圈第二遍。當第乙個列表長度是1時停止迴圈。然後輸出當前小孩的序號。

注意:

用range生成時,python3是生成乙個迭代器。所以需要用list來實際在記憶體生成這個列表。然後是這個列表的每個元素對應的小孩應該是這個數字加1(或者range生成列表從1開始到n+1)才是小孩的真正序號。

題中有兩點兒要求:一是小朋友數到k時淘汰;二是小朋友報數的個位數為k時小朋友也被淘汰。

l = list(map(int,input().split()))

n, k = l[0], l[1]

li = list(range(n))

c = 1

while len(li) > 1:

li1 =

for i in range(len(li)):

if c%k==0:

c += 1

else:

c += 1

li = li1[:]

print(li[0]+1)

l = list(input().split())

n, k = int(l[0]), int(l[1])

li = list(range(1,n+1))

c = 1

while len(li) > 1:

li1 =

#之前沒有考慮到k=1

if k == 1:

li = li1[:]

break

for i in range(len(li)):

if c%k==0:

c += 1

else:

c += 1

li = li1[:]

print(li[0])

l = list(input().split())

n, k = int(l[0]), int(l[1])

li = list(range(1,n+1))

c = 1

while len(li) > 1:

li1 =

#之前沒有考慮到k=1

if k == 1:

li = li1[:]

break

for i in range(len(li)):

#之前沒有考慮個位數為k

if (c%k==0) or (c%10==k):

c += 1

else:

c += 1

li = li1[:]

print(li[0])

CCF201712 2 遊戲 佇列方法

試題編號 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號小朋友開始順...

ccf 201712 2 試題名稱 遊戲

問題描述 有n個小朋友圍成一圈玩遊戲,小朋友從1至n編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,1號小朋友坐在n號小朋友的順時針方向。遊戲開始,從1號小朋友開始順時針報數,接下來每個小朋友的報數是上乙個小朋友報的數加1。若乙個小朋友報的數為k的倍數或其末位數 即...