题解 | #删数#

删数

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
全部评论

相关推荐

10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务