中心立方数


问题陈述包括为某个正数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.