Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมคำนวณ Centered Nonagonal Number ใน C++

Centered Nonagonal Number (จำนวน Nonagonal กึ่งกลาง) เป็นลำดับเลขที่แสดงรูปแบบจุดจัดเรียงเป็น Nonagon (รูปเก้าเหลี่ยม) หลายชั้น มีจุดกึ่งกลาง 1 จุด

สูตรคำนวณ

พจน์ที่ n (เริ่มจาก n=1):

Nc(n) = (3n - 2)(3n - 1) / 2

ลำดับตัวอย่าง (n = 1 ถึง 10)

1, 10, 28, 55, 91, 136, 190, 253, 325, 406

การตรวจสอบสูตร

n3n-23n-1ผลคูณ/2
1121
24510
37828
4101155
5131491

ตัวอย่าง

n = 20

Output: 1711

คำนวณ: (3×20-2)(3×20-1)/2 = 58×59/2 = 1711

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

long long centeredNonagonal(int n) {
    // ใช้ long long ป้องกัน overflow สำหรับ n ใหญ่
    return 1LL * (3 * n - 2) * (3 * n - 1) / 2;
}

void printSeries(int n) {
    cout << "Centered Nonagonal Series: ";
    for (int i = 1; i <= n; i++) {
        cout << centeredNonagonal(i);
        if (i < n) cout << " ";
    }
    cout << endl;
}

int main() {
    int n = 20;
    cout << "Centered Nonagonal Number (n=" << n << "): " 
         << centeredNonagonal(n) << endl;
    
    n = 10;
    printSeries(n);
    
    return 0;
}

ผลลัพธ์

Centered Nonagonal Number (n=20): 1711
Centered Nonagonal Series: 1 10 28 55 91 136 190 253 325 406

ความสัมพันธ์กับ Figurate Numbers

Centered Nonagonal Number เป็นประเภทหนึ่งของ Centered Polygonal Numbers:

  • Centered Triangular: (3n² - 3n + 2)/2
  • Centered Square: 2n(n-1) + 1
  • Centered Pentagonal: (5n² - 5n + 2)/2
  • Centered Hexagonal: 3n(n-1) + 1
  • Centered Heptagonal: (7n² - 7n + 2)/2
  • Centered Octagonal: 4n(n-1) + 1
  • Centered Nonagonal: (3n-2)(3n-1)/2

การหาค่า n จากค่าที่กำหนด (Inverse)

แก้สมการ (3n-2)(3n-1)/2 = x

9n² - 9n + 2 = 2x
9n² - 9n + (2 - 2x) = 0
n = [9 + √(81 - 36(2-2x))] / 18
  = [9 + √(9 + 72x)] / 18

ถ้า n เป็นจำนวนเต็ม → x เป็น centered nonagonal number

ความซับซ้อน

  • เวลา: O(1) ต่อการคำนวณ 1 ค่า, O(n) สำหรับพิมพ์ series
  • พื้นที่: O(1)