Python 中的康奈尔序列
假设我们有一个数字 n,我们需要找出康奈尔序列的第 n 项。康奈尔序列如下: 1. 取第一个奇数:1 2. 取接下来的两个偶数 2、4 3. 然后取接下来的三个奇数 5、7、9 4. 然后取接下来的四个偶数 10、12、14、16 依次类推。
因此,如果输入为 12,则输出为 21
为了解决这个问题,我们将按照以下步骤操作 −
- i := 1
- 当 i *(i + 1) / 2 的商 < n + 1 时,执行以下操作:
- i := i + 1
- idx := i *(i + 1) / 2,仅取商
- num := i^2
- 返回 num - 2 *(idx - n - 1)
让我们看看以下实现来更好地理解 −
示例
class Solution: def solve(self, n): i = 1 while (i * (i + 1) // 2) < n + 1: i += 1 idx = i * (i + 1) // 2 num = i**2 return num - 2 * (idx - n - 1) ob = Solution() print(ob.solve(12))
输入
12
输出
21
广告