約瑟夫環(huán)問題
輸入測試用例數(shù)量num
每組測試用例輸入格式:
輸入人數(shù)
輸入kill號
測試用例:
輸入:3 2 3 4 2 4 5
輸出:1 2
?。病。础。场。?br>
?。薄。场。病。?br>
思路:
分為進桌和出桌。
res = []
num = int(input())
for i in range(num):#測試用例數(shù)
n = int(input())#人數(shù)
m = int(input())#kill號
come = []#進桌序列
leave = []#出桌序列
for j in range(n):#進桌,進n個人
come.append(j+1)#j從0開始,所以要進j+1
start = 0
for k in range(n-1):#最后一個人直接放到出桌最后一位,所以先執(zhí)行n-1個人(除最后一個人的情況)
start = (start+m-1)%len(come)
leave.append(come[start])#把出桌的編號放到出桌里
del come[start]#在入桌中刪除這個編號
leave.append(come[0])#把最后一個人放到出桌的最后
res.append(leave)#把出桌作為放到結(jié)果里
for i in range(len(res)):#輸出數(shù)據(jù)
for j in range(len(res[i])):
print(res[i][j],end='')#默認輸出完是回車,所以后面加上end=''
if j != len(res[i])-1 :#如果輸出沒到最后一個就輸出空格,最后一個不輸出空格
print(" ",end='')
else :
print("")