ภาพรวม
ลำดับ Connell สร้างโดยสลับกลุ่มเลขคี่-คู่ ขนาดกลุ่มเพิ่มทีละ 1:
- 1 เลขคี่: 1
- 2 เลขคู่: 2, 4
- 3 เลขคี่: 5, 7, 9
- 4 เลขคู่: 10, 12, 14, 16
- ...
ลำดับ: 1, 2, 4, 5, 7, 9, 10, 12, 14, 16, 17, 19, 21, ...
สูตรคำนวณพจน์ที่ n
- หา
iที่ทำให้i(i+1)/2 ≥ n+1(ขนาดกลุ่มที่ครอบคลุม n) idx = i(i+1)/2(ตำแหน่งสุดท้ายของกลุ่ม i)num = i²(ค่าสุดท้ายของกลุ่ม i)- คำตอบ =
num - 2×(idx - n - 1)
ตัวอย่าง n=12
- i=5: 5×6/2=15 ≥ 13 ✓
- idx=15, num=25
- ans = 25 - 2×(15-12-1) = 25 - 2×2 =
21
โค้ด Python
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))
ผลลัพธ์
21