中心十三邊形數
問題陳述指出,我們需要列印任何正數 N 的第 N 箇中心十六邊形數。
十三邊形數是表示自身十三邊形的數字。在數學中,十三邊形是一種有 13 條邊的多邊形。
中心十三邊形數是可以表示為中心的一個點,然後在其周圍依次排列十三邊形的其他點,形成連續的十三邊形層,十三邊形是一個 13 邊形。
讓我們透過圖形更好地理解中心十三邊形數的概念。
第一個中心十三邊形數可以用中心的一個點表示。因此,第一個中心十三邊形數是 1。
第二個中心十三邊形數可以表示為中心的一個點,周圍環繞著一個十三邊形。因此,第二個中心十三邊形數是 14。
第三個中心十三邊形數表示為中心的一個點,周圍環繞著一個十三邊形,以及一個連續的十三邊形層。
因此,這個數字將是 1+13+26=40。
遵循相同的模式,可以找到下一個中心十三邊形數。利用中心十三邊形數的概念,前幾個中心十三邊形數為 **1, 14, 40, 79, 131, 196, 274, 365, 469, 586……**。
所以在這個問題中,我們將得到任何正數 N,我們需要列印與 N 值對應的中心十三邊形數的值。
示例
輸入: 5
輸出 : 131
輸入: 8
輸出 : 365
讓我們看看我們將在這個問題中用來解決它的演算法。
演算法
在這樣的問題中,總是有一個遵循的模式。我們需要找出那個模式。每個中心十三邊形數都表示為中心的一個點,周圍環繞著連續的十三邊形層。連續的十三邊形層為 13、26、39、52……
如果我們仔細觀察十三邊形的連續層,我們可以看到它是一個公差為 13 的等差數列。我們可以說第 N 箇中心十三邊形數是 1 與從 0 開始到 N 的十三邊形連續層序列的和的和。
讓我們透過下面的插圖更好地理解這一點。
從 0 開始的十三邊形連續層序列為 0、13、26、39、52……
第一個中心十三邊形數是 1,可以表示為 0+1。
第二個中心十三邊形數是 14,可以表示為 0+13+1。
第 5 箇中心十三邊形數是 131,可以表示為從 0 到 5 的十三邊形連續層的和,以及 1。
0+13+26+39+52+1= 131.
從上面的例子中,我們可以得出結論,第 N 箇中心十三邊形數是 1 與等差數列前 N 項和的和,該等差數列的第一項為 0,公差為 13。我們可以將第 N 箇中心十三邊形數的公式表示為 -
$$\mathrm{(中心十三邊形)n\:=\:等差數列前N項和\:+1}$$
$$\mathrm{(中心十三邊形)_N\:=\:\frac{N}{2}(2a\:+\:(N-1)d)\:+1}$$
其中,a=等差數列的第一項,為 0
d=等差數列的公差,為 13
$$\mathrm{(中心十三邊形)_N\:=\:第N箇中心十三邊形數}$$
將值代入上述公式後,可以寫成
$$\mathrm{(中心十三邊形)_N\:=\:(\frac{13N}{2}(N-1))+1}$$
$$\mathrm{(中心十三邊形)_N\:=\:\frac{13N(N-1)}{2}+1}$$
每個中心十三邊形數都可以表示為 $\mathrm{(\frac{13N(N-1)}{2})+1}$ 的形式。
我們將使用此公式在我們的方法中計算第 N 箇中心十三邊形數。
方法
我們將用來解決問題的方法的分步說明 -
初始化一個函式來計算第 N 箇中心十三邊形數。
使用演算法部分推匯出的公式查詢第 N 個數字並將其儲存在任何變數中。
返回變數並列印其中儲存的值,這將是我們的輸出。
示例
C++ 中的方法實現 -
#include <iostream>
#include <bits/stdc++.h>
//function to calculate N-th centred tridecagonal number
long long int CTn(int N){
long long int ans= ((13 * N * (N-1))/2) + 1; //store the N-th value
return ans; //return the value
}
using namespace std;
int main(){
int N=12;
cout<<N<<"-th centred tridecagonal number is : "<<CTn(N)<<endl; //to print the N-th centred tridecagonal number
N=17;
cout<<N<<"-th centred tridecagonal number is : "<<CTn(N)<<endl;
return 0;
}
輸出
12-th centred tridecagonal number is : 859 17-th centred tridecagonal number is : 1769
時間複雜度:O(1),因為執行操作需要常數時間。
空間複雜度:O(1),沒有佔用額外的空間。
結論
這就是我們如何使用從觀察中心十三邊形數序列中遵循的模式推匯出的公式來解決上述問題,以便在 C++ 中列印第 N 箇中心十三邊形數。
我希望您發現本文有助於闡明問題的概念。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP