#16807: [python]請各位大大幫忙TLE(80%)


bigppman89@gmail.com (電工膠布_python啦~)

學校 : 臺中市立西苑高級中學
編號 : 91162
來源 : [61.218.122.12]
最後登入時間 :
2019-12-04 15:23:11
c296. APCS-2016-1029-3定時K彈 -- 2016年10月APCS | From: [122.118.214.203] | 發表日期 : 2019-02-09 20:37

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)#打出結果

我以為我已經夠省的說

 
#16808: Re:[python]請各位大大幫忙TLE(80%)


314159265358979323846264338327 ... (少年π)

學校 : 臺北市私立延平高級中學
編號 : 69058
來源 : [223.137.149.175]
最後登入時間 :
2024-11-18 16:24:11
c296. APCS-2016-1029-3定時K彈 -- 2016年10月APCS | From: [223.136.46.9] | 發表日期 : 2019-02-09 20:56

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道理也一樣
不能單純模擬,找一下規律

 
#20585: Re:[python]請各位大大幫忙TLE(80%)


TCFSH69 (TCFSH)

學校 : 國立臺中第一高級中學
編號 : 81602
來源 : [140.116.191.189]
最後登入時間 :
2022-09-01 23:15:51
c296. APCS-2016-1029-3定時K彈 -- 2016年10月APCS | From: [122.118.43.201] | 發表日期 : 2020-02-10 17:23

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




 
#30563: Re: [python]請各位大大幫忙TLE(80%)


jefffangedu (jeffjcfangedu)

學校 : 國立臺灣師範大學附屬高級中學
編號 : 110728
來源 : [36.231.133.80]
最後登入時間 :
2024-11-27 10:18:11
c296. APCS-2016-1029-3定時K彈 -- 2016年10月APCS | From: [118.169.80.104] | 發表日期 : 2022-05-29 11:51

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)
就會過了,試試看

 
ZeroJudge Forum