中心十二面体数

data structurec++server side programmingprogramming

问题陈述说,对于用户输入的任何正值 N,打印第 N 个中心十二面体数。

中心十二面体数是可以用特定图形表示的数字。十二面体是数学中的三维图形,具有 12 个平面。中心十二面体数是可以以图形形式表示的数字,中心有一个点,周围是十二面体的连续层(12 面三维结构)。十二面体的连续层表示第一层将具有围绕中心点的 12 面 3-D 结构,该中心点进一步被 14 面 3-D 结构包围,依此类推。

中心十二面体数序列的前几个数字是 1、33、155、427、909…..

中心十二面体数序列中的每个数字都可以表示为中心的一个点,被十二面体的连续层包围。

在这个问题中,我们将得到一个正数 N,我们的任务是打印与 N 值相对应的第 N 个中心十二面体数。

示例 −

输入: N=2
输出:33

解释 − 中心十二面体数列中的第二个数字是 33,它表示为中心的一个点,周围是十二面体。

输入:N=4
输出:427

解释 − 427 是中心十二面体数列中的第四个数字,遵循中心十二面体数的特定模式。

类似地,我们需要在此问题中打印中心十二面体数列中的第 N 个数字。让我们看看中心十二面体数列中每个数字之间的数学关系。

算法

有一个数学公式来表示序列中的每个中心十二面体数。序列中的每个数字都可以表示为中心的一个点,周围是连续的十二面体层,同样,每个中心十二面体数都有下面提到的形式。

$\mathrm{(centered \: dodecahedral)_n=10(n−1)^3+15(n−1)^2+7(n−1)+1}$

其中,n= 从 1 开始的第 N 个中心十二面体数。

中心十二面体数列中的每个数字都可以用上面提到的三次方程的形式表示。假设我们想要第三个中心十二面体数,

因此将 n=3 代入方程,我们得到

$$\mathrm{= 10(3 − 1)^3 + 15(3 − 1)^2 + 7(3 − 1) + 1}$$

$$\mathrm{= 10*8 + 15*4 + 7*2 + 1}$$

$$\mathrm{= 80 + 60 + 14 + 1 = 155}$$

第三个中心十二面体数是 155,我们可以通过将 n=3 代入三次方程得到。

因此,我们将在我们的方法中使用这个三次方程来打印任意的第 N 个中心十二面体数N 的值。

方法

下面提到了实现 N 心十二面体数公式的步骤。

  • 我们将创建一个函数来获取 N 心十二面体数。

  • 我们将创建一个 long long int 数据类型的变量来存储 N 心十二面体数。对于较大的 N 值,采用 long long int 数据类型来存储中心十二面体数。

  • 将方程式 $\mathrm{10(N − 1)^3 + 15(N − 1)^2 + 7(N − 1) + 1}$ 的结果存储在变量中。

  • 返回存储在变量中的值,该值将是所需的输出。

该方法的 C++ 代码 −

示例

//C++ 代码用于打印第 N 个中心十二面体数
#include <bits/stdc++.h>
using namespace std;

//函数用于计算第 N 个中心十二面体数
long long int CDn(int N){

    //存储对应于N的中心十二面体数的值
    long long int num = 10*pow(N-1,3) + 15*pow(N-1,2) + 7*(N-1) + 1 ;
    return num; //返回第N个中心十二面体数
}
int main(){
    int N;
    N=9;
    cout<<"第N个十二面体数为"<<CDn(N)<<endl; //调用函数
    N=19;
    cout<<"第N个十二面体数为"<<CDn(N)<<endl;
    return 0;
}

输出

第 N 个十二面体数为 6137
第 N 个十二面体数为 63307

时间复杂度 −: O(1) ,我们花费常数时间来计算第 N 个中心十二面体数。

空间复杂度 − O(1) ,该方法不占用额外空间。

结论

本文讨论了中心十二面体数及其图形表示。我们还了解了第 N 个中心十二面体数的一般表达式,我们在方法中使用它来在恒定时间和空间内解决问题。

我希望阅读本文后,您与该主题相关的所有疑问都已清除。


相关文章