Python程序:求解球在n次反转后的位置


假设有n个球,球的顺序为1,2,3,4,...,n。现在球的顺序反转,变为n, n-1, n-2, ......, 2, 1。球再次反转,这次从位置1到n反转,顺序变为n, 1, 2,....., n-1。这个反转过程重复n次,每次起始位置向右移动1位。现在我们需要找出初始位置为'index'的球在反转后的位置。

例如,如果输入为balls = 5, index = 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。

为了解决这个问题,我们将遵循以下步骤:

  • 如果 index < floor(balls / 2),则
    • 返回 2 * index + 1
  • 否则,
    • 返回 2 *(balls - index - 1)

示例

让我们看看下面的实现来更好地理解:

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

更新于:2021年10月23日

浏览量:193

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.