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

更新日期: 22-Sep-2020

447 次浏览

开启你的 职业生涯

完成课程,取得认证

开始
广告