中心十五角數
問題包括為任何輸入數字 N 列印第 N 箇中心十五角數。
中心十五角數是一個可以表示為圖形形式的數字,該圖形在中心有一個點,並被十五邊形(即 15 邊形)的連續層包圍。這裡,十五邊形的連續層表示圍繞中心點的第一層將是 15 邊形,下一層將是 30 邊形,然後是 45 邊形,依此類推。
我們可以透過下面的圖形來理解中心十五角數的概念。
第一個中心十五角數用中心的一個點表示。因此,第一個數字將是 1。
下一個中心十五角數可以表示為中心的一個點,後面跟著一個圍繞著的十五邊形(15 邊形)層。因此,第二個中心十五角數將是 15+1=16。
第三個中心十五角數是 46,因為它以圖形的形式表示,中心有一個點,周圍環繞著十五邊形的連續層。十五邊形的連續層表明第一層將是 15 邊形,第二層將是 30 邊形。
我們可以按照相同的模式計算連續的中心十五角數。按照圖形中的模式計算出的前幾個中心十五角數是1、16、46、91、151、226、316、421、541……。
我們將得到任何正整數 N,我們需要列印對應於該正整數 N 的第 N 箇中心十五角數。
示例−
INPUT : N=5 OUTPUT : 151
說明 − 第 5 箇中心十五角數是 151,表示為中心的一個點,周圍環繞著四層連續的十五邊形,其總和為 1+15+30+45+60=151。
INPUT : N=9 OUTPUT : 541
說明 − 第 9 箇中心十五角數是 541。
讓我們看看演算法來找出第 N 箇中心十五角數。
演算法
我們需要觀察中心十五角數序列中遵循的模式。每個第 N 箇中心十五角數當表示為圖形形式時,都被 (N-1) 個連續的十五邊形層包圍。十五邊形的連續層序列是 15、30、45、60、75……
第一個中心十五角數被 0 個十五邊形層包圍,因為它只是用中心的一個點表示。所以我們可以說第 N 箇中心十五角數是 (N-1) 個連續的十五邊形層的總和 + 1。
由於十五邊形的連續層序列形成一個公差為 a=15 和公差為 d=15 的等差數列。因此,第 N 箇中心十五角數可以計算為 −
$$\mathrm{(centered \: pentadecagonal)_N=sum \: of \: (N − 1)successive \: layers \: of \: pentadecagon + 1}$$
$$\mathrm{sum \: of \: N \: ters \: of \: AP =\frac{N}{2}(2*a+(N − 1)d)}$$
其中,a=等差數列的首項
$$\mathrm{d= 等差數列的公差}$$
使用計算第 N 箇中心十五角數的公式,
$$\mathrm{(centered \: pentadecagonal)_N=\frac{(N − 1)}{2}(2*15+(N − 2)*15)+1}$$
$$\mathrm{=\frac{15*(N − 1)}{2}(2+N − 2)+1}$$
$$\mathrm{=\frac{15*N*(N − 1)}{2}+1}$$
這是使用簡單數學推匯出的獲取任何第 N 箇中心十五角數的公式。我們將在解決問題的方法中使用此公式。
方法
在 C++ 中應用公式計算第 N 箇中心十五角數需要遵循的步驟 −
我們將建立一個函式來計算第 N 箇中心十五角數。
初始化一個名為 ans 的變數為 long long int,以儲存較大 N 值的第 N 箇中心十五角數。
使用演算法中推匯出的公式計算數字。
列印計算出的數字,這將是我們所需的輸出。
該方法的 C++ 程式碼 −
示例
//C++ code to print the N-th centred pentadecagonal number
#include<bits/stdc++.h>
using namespace std;
//function to give the N-th centred pentadecagonal number
long long int Nth_number(int N){
long long int ans= (15 * N * (N-1))/2 + 1; //to store N-th number
return ans; //return the N-th number
}
int main(){
int N;
N=12;
cout<<"The N-th centred pentadecagonal number is "<<Nth_number(N)<<endl; //calling the function
N=19;
cout<<"The N-th centred pentadecagonal number is "<<Nth_number(N)<<endl;
}
輸出
The N-th centred pentadecagonal number is 991 The N-th centred pentadecagonal number is 2566
時間複雜度 − O(1),計算第 N 個數字需要常數時間。
空間複雜度 − O(1),我們沒有使用任何額外的空間。
結論
本文討論了中心十五角數背後的概念。我們根據中心十五角數序列中遵循的模式,找出了計算任何正數 N 的第 N 箇中心十五角數的公式。我們提出了一種有效的方法,使用推匯出的公式在 C++ 中列印第 N 箇中心十五角數。
我希望在閱讀本文後,您對該主題的相關概念已經清楚了。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP