题解 | #删数#
删数
http://www.nowcoder.com/practice/f9533a71aada4f35867008be22be5b6e
思路:如果是第1个数和第二个数,每次都将第一个数挪到最后一位,并将第一个数删掉;
如果是第3个数(每次都删除了数,所以这个数现在也在第一位),那就只删除第一个数
第一位处理:
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 0(第一个数挪到第最后一位)
1 2 3 4 5 6 7 0(删除第一个数)
第二位处理:
1 2 3 4 5 6 7 0
1 2 3 4 5 6 7 0 1(第一个数挪到第最后一位)
2 3 4 5 6 7 0 1(删除第一个数)
第三位处理:
2 3 4 5 6 7 0 1
3 4 5 6 7 0 1(删除第一个数)
代码如下:
if __name__ == "__main__":
while True:
try:
n = int(input())
num = [i for i in range(n)]
count = 0
while len(num) > 1:
count += 1
if count != 3:
num.append(num[0])
else:
count = 0
del num[0]
print(num[0])
except:
break