import sys for line in sys.stdin: a = line.split() n=int(a[0]) t=1 l=[i for i in range(n+1)] m=0 l2=[] while len(l)!=1: n=len(l) for i in range(1,n//2+1): m=0 if t*(2*i-1)<n: l2.append(l[t*(2*i-1)]) l[t*(2*i-1)-1]=0 else: break if len(l)==1: break l=[i for i in l2] l2=[] #print(l) print(l[0]) #print(int(a[0]) + int(a[1]))
这道题的整体思路比较简单。每次都删除数组的奇数位上的元素,因为使用pop会立马改变数组长度,我们选择用一个新数组去存储偶数位置的元素。