中心十二邊形數
中心十二邊形數指的是一個圖形數,它表示一個十二邊形。中心十二邊形數由中心的一個點和圍繞它的連續十二邊形(即一個12邊多邊形)層中的其他點表示。
下圖可以更好地解釋中心十二邊形數。

對於n=1,中心只有一個點。因此輸出為1。

對於n=2,中心有一個點,周圍圍繞著一個十二邊形。因此,點的總數為13。所以下一個中心十二邊形數為13。

對於n=3,中心有一個點,周圍圍繞著一個十二邊形,再由下一層連續的十二邊形包圍,這一層包含24個點。因此,點的總數為37,這將是下一個中心十二邊形數。
類似地,對於每個正數n,都將遵循此規律。根據這一點,前幾個中心十二邊形數將是 **1, 13, 37, 73, 121, 181……**。
在這個問題中,我們將得到任意一個正數n,我們需要列印第n箇中心十二邊形數。
例如:
**輸入** - 2
**輸出** - 13
**輸入** - 5
**輸出** - 121
以下是解決此問題的演算法。
演算法
為了計算第n箇中心十二邊形數,我們需要找出這個問題中遵循的規律。
根據中心十二邊形數的概念,它由中心的一個點和連續的十二邊形層表示。連續的十二邊形層是12, 24, 36, 48……如果我們仔細觀察這個規律,它形成了一個公差為12的等差數列。
由於前幾個中心十二邊形數的序列是1, 13, 37, 73……這僅僅是十二邊形層和中心一個點的總和。
如果我們考慮從0開始的連續十二邊形層的序列,我們可以更好地理解它。
0, 12, 24, 36, 48. For n=1, the centred dodecagonal number is 1 which is 0+1. For n=2, the centred dodecagonal number is 13 which is 0+12+1. For n=3, the centred dodecagonal number is 37 which is 0+12+24+1.
從這裡我們可以認為,第n箇中心十二邊形數就是n項等差數列(從0開始,公差為12)的和加上1。
所以,第n箇中心十二邊形數的公式可以是:
$$\mathrm{CDn= n項等差數列之和(a=0\:and\:d=12)\:+1}$$
$$\mathrm{CD_n\:=\:\frac{n}{2}(2a\:+\:(n-1)d)\:+1}$$
這裡,$\mathrm{CD_n}$ 是第n箇中心十二邊形數
a是等差數列的首項,即0
d是等差數列的公差,即12
進一步,公式可以寫成:
$$\mathrm{CD_n\:=\:\frac{12n}{2}(n-1)\:+\:1}$$
$$\mathrm{CD_n\:=\:6n(n-1)\:+\:1}$$
我們將使用上述公式在我們的方法中計算第n箇中心十二邊形數。
方法
為了解決這個問題,我們簡單地建立一個函式來計算第n箇中心十二邊形數。
我們將使用上面推導的公式來計算任何正數n的第n箇中心十二邊形數。
返回計算出的值,這將是我們期望的輸出。
示例
以下是上述方法在C++中的實現 -
#include <iostream> #include<bits/stdc++.h> using namespace std; //function to calculate the nth centred dodecagonal number int CDn(int N){ int ans= 6 * N * (N-1) + 1; //used to store nth centred dodecagonal number value return ans; //return the answer } int main(){ int N=8; cout<<CDn(N)<<endl; N=6; cout<<CDn(N)<<endl; N=12; cout<<CDn(N)<<endl; return 0; }
輸出
337 181 793
**時間複雜度**: O(1),因為所花時間是常數。
**空間複雜度**: O(1),因為我們沒有佔用任何額外空間。
結論
在本文中,我們解決了列印第n箇中心十二邊形數的問題。我們學習了中心十二邊形數的概念,並推匯出了第n個數的公式。
我希望本文能幫助你理解和澄清你關於這個問題的所有概念。