中心立方數


問題陳述包括為某個正數N列印第N箇中心立方數,該數將作為使用者輸入。

中心立方數是在三維模式中點的數量,該模式由一個點和同心立方點層組成,第i層的正方形面上有i^2個點。它等效於邊長為n+1的立方體內的體心立方模式中的點數。

您可以參考維基百科瞭解中心立方數的圖形表示,這將有助於更好地理解主題。

中心立方數序列的第一個數是1,表示中心的一個點。其次,第二個數是9,表示中心的一個點,周圍環繞著一層立方點,正方形面上有1個點,因此總數為9。

在接下來的中心立方數中遵循類似的模式,表示模式中點的總數。前幾個中心立方數是 **1, 9, 35, 91, 189, 341, 559, 855……**

序列中的每個數字都表示三維模式中點的數量,該模式由一個點和(N-1)個同心立方點層組成,其中N是序列中中心立方數的位置。

在這個問題中,我們將得到一個正整數,例如N,我們的任務是找到與給定N值對應的中心立方數的值。

示例

INPUT : N=4
OUTPUT : 91

解釋 - 輸入中給定的N值為4。第4箇中心立方數是91,表示三維模式中點的總數,其中中心點周圍環繞著3層同心立方點。

INPUT : N=6
OUTPUT : 341

解釋 - 與N(即6)對應的中心立方數的值為341,表示當中心點周圍環繞著5層同心立方體時點的總數,其中每個第i個立方體在正方形面上有i^2個點。

讓我們嘗試理解用於解決列印第N箇中心立方數問題的演算法。

演算法

中心立方數序列中的數字之間存在數學關係。由於每個數字都表示三維模式中點的總數,其中中心點周圍環繞著由點形成的同心立方體層。每個第N個數周圍環繞著(N-1)個同心立方點層。

給出序列中任何第N箇中心立方數的數學公式為:

(中心立方數)𝑛 = (𝑛 − 1)3 + 𝑛3

其中,n是序列中中心立方數的位置。

這個公式給出了當中心的一個點周圍環繞著(n-1)個由點形成的同心立方體層時的三維模式中的點數。每個第n箇中心立方數都可以用上述三次方程表示。

讓我們嘗試n=6的方程。

因為我們知道第6箇中心立方數是341。

將n=6代入方程,

(𝑛 − 1)3 + 𝑛3 = (6 − 1)3 + 63 = 125 + 216 = 341,這是第6箇中心立方數。

因此,我們將使用公式(𝑛 − 1)3 + 𝑛3來計算我們方法中任何正值n的第N箇中心立方數,以解決問題。

方法

在我們的方法中,整合公式以找到第N箇中心立方數的步驟如下:

  • 為了計算第N箇中心立方數,我們將建立一個函式。

  • 我們將初始化一個變數來儲存第N箇中心立方數的值。該變數將是long long資料型別,以確保對於較大的N值,第N箇中心立方數的值較大。

  • 使用公式(𝑛 − 1)3 + 𝑛3,我們將計算給定N值的中心立方數並將其儲存在變數中。

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

示例

該方法的C++程式碼:

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

//function to calculate the N-th centered cube number 
long long Nth_number(int N){

   //long long data type is used to store centered cube number for large value of N
   long long a; //to store the number
   a = (N-1)*(N-1)*(N-1) + N*N*N; //using the formula (n-1)^3+n^3
   return a; //return the value stored in a
}
int main(){
   int N;
   N=11;
   //calling the function
   cout<<"The centered cube number for N="<<N<<" is "<<Nth_number(N)<<endl;
   N=28;
   cout<<"The centered cube number for N="<<N<<" is "<<Nth_number(N)<<endl;
   return 0;
}

輸出

The centered cube number for N=11 is 2331
The centered cube number for N=28 is 41635

**時間複雜度:O(1)**,因為該公式花費恆定時間執行操作。

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

結論

本文討論了中心立方數的概念以及中心立方數序列中數字之間的數學關係,用於計算第N箇中心立方數,我們在C++中使用這種方法在恆定時間和空間內解決了這個問題。

我希望閱讀本文後,您對中心立方數的所有概念都清楚了。

更新於:2023年9月27日

瀏覽量:169

開啟您的職業生涯

完成課程獲得認證

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