假设有n个球。球以 1,2,3,4,...,n 的方式排列。现在球按顺序颠倒,或以 n, n-1, n-2, ......, 2, 1 的方式排列。 球再次按顺序颠倒,这次它们从位置 1 颠倒到 n,或者现在顺序变成 n, 1, 2,....., n-1。这个反转过程重复 n 次,每次起始位置向右移动 1 个位置。我们现在必须找出反转后球最初在“索引”位置的位置。
所以,如果输入像球 = 5,索引 = 2,那么输出将是 4 球最初是:1, 2, 3, 4, 5
然后,
5,4,3,2,1 5,1,2,3,4 5,1,4,3,2 5,1,4,2,3
位置 2 的球当前位于位置 4。
让我们看看以下实现以获得更好的理解 -
def solve(balls, index): if index < balls // 2: return 2 * index + 1 else: return 2 * (balls - index - 1) print(solve(5, 2))
5, 2输出结果
4