中心八邊形數


問題陳述包括列印某個正整數 N 的第 N 箇中心八邊形數,該數將由使用者給出。

中心八邊形數是一種可以用圖形表示的數。每個中心八邊形數都可以表示為中心的一個點,周圍環繞著八邊形的連續層。八邊形是一種幾何多邊形,它有 8 條邊。八邊形的連續層意味著圍繞中心點的第一層將是一個八邊形,第二層將是一個 16 邊形,然後是一個 24 邊形,依此類推。

由於中心八邊形數是一種圖形數,讓我們藉助下面的圖形來理解這些數。

第一個中心八邊形數只是一箇中心點。因此,這個數是 1。

下一個中心八邊形數表示為中心的一個點,周圍環繞著一層八邊形。因此,這個數變為 1+8=9。

下一個中心八邊形數以圖形的形式表示為中心的一個點,周圍環繞著八邊形(8 邊形)和 16 邊形的 2 個連續層。因此,第三個中心八邊形數是 1+8+16=25。

類似地,中心八邊形數序列中的下一個數以圖形表示。遵循圖形的模式,我們可以計算中心八邊形數序列中的數。中心八邊形數序列中的前幾個數是1, 9, 25, 49, 81, 121, 169, 225, 289……

在這個問題中,我們將得到任何正整數,即 N。我們的任務是列印參考 N 的中心八邊形數的值,即第 N 箇中心八邊形數。

示例 -

INPUT : N= 4
OUTPUT : 49

解釋 - 給定的 N 值為 4。參考 N 的中心八邊形數,即第 4 箇中心八邊形數為 49,它可以表示為中心的一個點,周圍環繞著 (N-1) 個連續的八邊形層。八邊形的 3 個連續層是 8、16、24。因此,這個數是 1+8+16+24=49。

INPUT : N=7
OUTPUT : 169

解釋 - 對應於 N 的輸入值的中心八邊形數的值為 169,它表示為中心的一個點,周圍環繞著 (N-1) 個連續的八邊形層,即 1+8+16+24+32+40+48=169。

讓我們瞭解使用圖形中遵循的模式來計算任何正 N 值的第 N 箇中心八邊形數的演算法。

演算法

如果我們觀察任何中心八邊形數的圖形表示中遵循的模式,我們可以得出結論,它是 (N-1) 個連續的八邊形層和 1 的總和,其中 N 是第 N 箇中心八邊形數,而 1 表示中心點。

八邊形的連續層是 8, 16, 24, 32, 4…… 由八邊形的連續層形成的序列是一個等差數列,其首項為 8(即 a=8),每個項之間的公差也是 8(即 d=8)。

計算首項為 a、公差為 d 的等差數列的 n 項和 -

$$\mathrm{S_n = \frac{n}{2}(2*a+(n − 1)d)}$$

其中,𝑆𝑛 表示等差數列前 n 項的和,a 和 d 分別是等差數列的首項和公差。

我們可以使用這個公式來計算八邊形連續層序列前 (N-1) 項的和,因為它也是一個等差數列,以計算第 N 箇中心八邊形數。

因此,第 N 箇中心八邊形數可以由下式給出:

$$\mathrm{(中心八邊形)_N= (N − 1)個連續八邊形層的和 +1}$$

可以透過將值代入上述公式計算等差數列前 n 項的和來計算 (N-1) 個連續八邊形層的和。

$$\mathrm{(中心八邊形)_N=\frac {N − 1}{2}(2*a+(N − 2)d)+1}$$

a(即首項)的值為 8,d(即公差)的值也為 8,因為序列是 8, 16, 24, 32……

$$\mathrm{(中心八邊形)_N=\frac {(N − 1)}{2}(16+(N − 2)*8)+1}$$

此表示式可以進一步簡化為:

$$\mathrm{(中心八邊形)_N=\frac {8*(N − 1)}{2}(2+N − 2)+1}$$

$$\mathrm{=4N(N − 1)+1}$$

我們將使用我們根據中心八邊形數圖形表示中遵循的模式匯出的表示式來計算我們方法中第 N 箇中心八邊形數,以解決該問題。

方法

在我們的方法中實現第 N 箇中心八邊形數公式的步驟如下:

  • 為了計算任何輸入值 N 的第 N 箇中心八邊形數,建立一個函式。

  • 初始化一個名為 ans 的變數來儲存第 N 個數的值,這將是我們需要的答案。確保該變數的資料型別為 long long,以便儲存較大 N 值的中心八邊形數。

  • 使用公式 4𝑁(𝑁 − 1) + 1,我們將計算 N 的中心八邊形數並將其儲存在 ans 中。

  • 返回變數,這是我們需要的輸出。

該方法的 C++ 程式碼 -

示例

//C++ code to  print the N-th centered octagonal number
//for any positive value of N
#include <bits/stdc++.h>
using namespace std;

//function to calculate the N-th centered octagonal number for given value of N
long long number(int N){

   //long long data type is used to store larger values of N-th number
   long long ans; //to store the N-th centered octagonal number
   ans = 4*N*(N-1)+1; //using the formula 4N(N-1)+1 to calculate the number
   return ans; //return the value stored in ans
}

int main(){
   int N;
   N=14;
   
   //calling the function
   cout<<"The centered octagonal number for N="<<N<<" is "<<number(N)<<endl;   
   N=25;
   cout<<"The centered octagonal number for N="<<N<<" is "<<number(N)<<endl; 

   return 0;
}

輸出

The centered octagonal number for N=14 is 729
The centered octagonal number for N=25 is 2401

時間複雜度 - O(1),因為該表示式花費恆定時間來計算第 N 箇中心八邊形數。

空間複雜度 - O(1),因為我們在解決問題時沒有使用任何額外的空間。

結論

本文討論了中心八邊形數的概念及其圖形表示中遵循的模式。我們根據每個中心八邊形數的圖形模式推匯出一個表示式,我們在方法中使用該表示式以在 C++ 中以恆定時間和空間解決上述問題。

我希望在閱讀本文後,您已經瞭解了中心八邊形數的所有概念。

更新於:2023年9月27日

183 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.