總網頁瀏覽量

2018年3月23日 星期五

2016.10大學程式先修檢測實作題 第三題(定時K彈)






















































@@思考方向:重新定義一新的串列,此串列會移除第i個,然後從第i+1個重新排列

程式碼:
n,m,k=input().split(' ') 
n=int(n)  #輸入n個人
m=int(m)  #每到第m個人就爆炸
k=int(k)  #k個爆彈,炸k次

#每炸掉一個,串列重新編號,成一個新的串列
def remove(list,i): 
    return list[i+1:]+list[0:i]

#n個人編號,1~N
a=[] 
for i in range(1,n+1):
    a.append(i)

# k個炸彈,炸完重新編號,每次炸新串列的第m個人
for j in range(1,k+1): 
    a=remove(a,m-1) #注意是第m個人,所以m-1

#全炸完後,新串列的第一個人即是幸運者
print(a[0]) 

===========================================
@網路看到更簡捷的碼:
data=input().split(' ')
N,M,K=map(int,data)
person=[i for i in range(1,N+1)]
index=0
for i in range(K):
    index=(index+M-1)%len(person)
    del person[index]
    if index==len(person):
        index=0

print(person[index])



沒有留言:

張貼留言