链接:https://www.nowcoder.com/questionTerminal/f9533a71aada4f35867008be22be5b6e
来源:牛客网
题目
有一个数组 a[N] 顺序存放 0~N-1 ,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以 8 个数( N=7 )为例: {0,1,2,3,4,5,6,7} , 0->1->2(删除)->3->4->5(删除)->6->7->0(删除) ,如此循环直到最后一个数被删除。
输入描述:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。
输出描述:
示例
输入
3
输出
6
解析
# 约瑟环问题def main1(n):arr = list(range(n))arr.pop(2)while len(arr) >= 3:arr.append(arr.pop(0))arr.append(arr.pop(0))arr.pop(2)return arr[1]def main2(n, m=3):result = 0for i in range(1, n + 1):result = (result + m) % ireturn resultif __name__ == '__main__':while True:try:num = int(input())r = main2(num)print(r)except Exception:break
