给定的是一副有序的n
纸牌,编号1
为n
,卡片1
在顶部,卡片n
在底部。
只要一副牌中至少有两张牌,就会执行以下操作:
- 扔掉最上面的牌,把现在在牌堆顶上的牌移到牌堆底。
我的任务是找出最后一张k
弃牌和最后一张剩余牌的顺序。
每行输入包含两个非负数
n
, 在哪里n ≤ 5000
k
, 在哪里k < n
对于每个输入行产生两行输出。
k张弃牌的顺序
剩下的最后一张卡。
请参阅示例以了解预期的格式。
样本输入
7 2
19 4
10 5
6 3
4000 7
样本输入的输出
Last 2 cards discarded: [4, 2]
Remaining card: 6
Last 4 cards discarded: [2, 10, 18, 14]
Remaining card: 6
Last 5 cards discarded: [9, 2, 6, 10, 8]
Remaining card: 4
Last 3 cards discarded: [5, 2, 6]
Remaining card: 4
Last 7 cards discarded: [320, 1344, 2368, 3392, 832, 2880, 1856]
Remaining card: 3904
我的代码将继续打印出确切的答案,但下一行没有。
我很困惑为什么每次输出后都会打印 None 。
这是我的代码:
def throw_card(n,k):
lst=[]
bst=[]
for i in range(1,n+1):
lst.append(i)
while lst[0]!=lst[1] and len(lst)>1 and n<=5000 and k<n:
bst.append(lst.pop(0))
if len(lst)==1:
break
else:
lst.append(lst[0])
lst.remove(lst[0])
print('Last',k,'cards discarded: ',bst[n-(k+1):])
print('Remaining card: ',lst.pop())
print(throw_card(7,2))
print(throw_card(19,4))
print(throw_card(10,5))
print(throw_card(6,3))
print(throw_card(4000,7))
我的输出:
Last 2 cards discarded: [4, 2]
Remaining card: 6
None
Last 4 cards discarded: [2, 10, 18, 14]
Remaining card: 6
None
Last 5 cards discarded: [9, 2, 6, 10, 8]
Remaining card: 4
None
Last 3 cards discarded: [5, 2, 6]
Remaining card: 4
None
Last 7 cards discarded: [320, 1344, 2368, 3392, 832, 2880, 1856]
Remaining card: 3904
None