lst=[]
str1=input()
lst1=str1.split(" ")
N=int(lst1[0]) #玩家
M=int(lst1[1])-1 #第M個人
K=int(lst1[2]) #擊殺量
#增添玩家
lst=list(range(1,N+1))
K=N-K #玩家-擊殺量=倖存者
i=0
#遊戲開始
while N > K : #玩家>因該活著的人數
if i+M < N:
i=i+M
del lst[i]
N-=1
else:
i=i-N #從頭數
if i < N :
result=lst[i]
else:
result=lst[0]
print (result)#打出結果
lst=[]
str1=input()
lst1=str1.split(" ")
N=int(lst1[0]) #玩家
M=int(lst1[1])-1 #第M個人
K=int(lst1[2]) #擊殺量
#增添玩家
lst=list(range(1,N+1))
K=N-K #玩家-擊殺量=倖存者
i=0
#遊戲開始
while N > K : #玩家>因該活著的人數
if i+M < N:
i=i+M
del lst[i]
N-=1
else:
i=i-N #從頭數
if i < N :
result=lst[i]
else:
result=lst[0]
print (result)#打出結果
我覺得您可以參考解題報告
那雖然是寫給C++,但Python道理也一樣
不能單純模擬,找一下規律
import sys
while 1:
try:
line = sys.stdin.readline()
N , M , K = map(int,line.split())
index = 0
box = [i for i in range(1,N+1)]
for i in range(K):
index = (index+M-1) % N
N -= 1
box.remove(box[index])
index = index % N
print(box[index])
except:
break
我比你還省還是照樣TLE QQ
import sys
while 1:
try:
line = sys.stdin.readline()
N , M , K = map(int,line.split())
index = 0
box = [i for i in range(1,N+1)]
for i in range(K):
index = (index+M-1) % N
N -= 1
box.remove(box[index])
index = index % N
print(box[index])
except:
break
我比你還省還是照樣TLE QQ
box.remove(box[index])
改成
box.pop(index)
就會過了,試試看