中心十六邊形數
十六邊形數是指代表十六邊形的數字。十六邊形是一種由16條邊組成的多邊形。
中心十六邊形數是指由中心的一個點和圍繞它以連續的十六邊形層(即16邊形)排列的其他點所表示的數字。我們可以透過下面的圖更好地理解中心十六邊形數。
第一個中心十六邊形數的中心只有一個點。因此,第一個中心十六邊形數為1。
下一個中心十六邊形數包含一箇中心點和圍繞它的一個十六邊形。因此,下一個數字將是17。
下一個中心十六邊形數將是49,因為中心將有一個點,周圍環繞著連續的十六邊形層,即16和32。因此,這個數字將是16+32+1=49。
每個第n箇中心十六邊形數都遵循類似的概念。以此類推,前幾個中心十六邊形數是**1, 17, 49, 97, 161, 241……**
問題陳述包括我們需要根據給定的輸入N列印第N箇中心十六邊形數。
例如:
輸入 : 5
輸出 : 161
輸入: 8
輸出: 449
以下是解決該問題的演算法。
演算法
對於這個問題,我們需要識別問題中遵循的模式,以便計算第n箇中心十六邊形數。
中心十六邊形數的概念表明,它由中心的一個點和圍繞它的連續的十六邊形層表示。連續的十六邊形層可以表示為16, 32, 48, 64…。如果我們注意形成的模式,它形成了一個公差為16的等差數列。
由於前幾個中心十六邊形數為1, 17, 49, 97…。如果我們仔細觀察這個模式,它只不過是從0和1開始,直到N的連續十六邊形層的總和。
從0開始的連續十六邊形層的序列將是0, 16, 32, 48, 64…。
第一個中心十六邊形數是1,即0+1。
第二個中心十六邊形數是17,即0+16+1。
第三個中心十六邊形數是49,即0+16+32+1。
第四個中心十六邊形數是97,它只是直到N(這裡是4)和1的連續十六邊形層的總和。它可以表示為0+16+32+48+1。
透過以上例子,我們可以認為第n箇中心十六邊形數是n項等差數列的和,其公差為16,首項為0。為了計算第n箇中心十六邊形數,它可以寫成:
CHn = 等差數列n項和 + 1
$$\mathrm{CH_n\:=\:\frac{n}{2}(2a\:+(n-1)d)+1}$$
𝐶𝐻𝑛= 第n箇中心十六邊形數
a= 等差數列的首項,為0
d= 等差數列的公差,即16
將所需的值代入上述公式,它可以進一步修改為:
$$\mathrm{CD_n\:=\:\frac{16n}{2}(n-1)+1}$$
$$\mathrm{CD_n\:=\:8n(n-1)+1}$$
我們將使用上面推導的公式來計算我們方法中的第n箇中心十六邊形數。
方法
初始化一個函式來計算第N箇中心十六邊形數。
使用上面推導的公式計算第N個值。
我們將初始化一個變數來儲存第n箇中心十六邊形數的值。
返回變數,這將是我們需要的輸出。
示例
以下是C++中該方法的實現:
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
//function to calculate the nth centred Hexadecagonal number
int CHn(int N){
int a= 8 * N * (N-1) + 1; //used to store nth centred Hexadecagonal number value
return a; //return the answer
}
int main(){
int N=5;
cout<<CHn(N)<<endl;
N=10;
cout<<CHn(N)<<endl;
N=13;
cout<<CHn(N)<<endl;
return 0;
}
輸出
161 721 1249
**時間複雜度:O(1)**,因為時間是恆定的。
**空間複雜度:O(1)**,因為不需要額外的空間。
結論
在本文中,我們嘗試學習中心十六邊形數的概念。我們還提出了一種方法,可以為任何正數N列印第N箇中心十六邊形數。
我希望您覺得本文有助於解決您關於該概念的所有疑問。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP