中心十二面体数
题目要求对于任何正数N(用户输入),打印第N个中心十二面体数。
中心十二面体数是一种可以用特定图形模式表示的数。十二面体是数学中的一种三维图形,具有12个平面。中心十二面体数是一个可以用中心有一个点,周围环绕着连续的十二面体层(12个面的三维结构)的图形表示的数。连续的十二面体层意味着第一层将有12个面的三维结构围绕着中心的点,而进一步围绕着的是14个面的三维结构,以此类推。
中心十二面体数序列的前几个数是 **1, 33, 155, 427, 909**……
中心十二面体数序列中的每个数都可以表示为中心有一个点,周围环绕着连续的十二面体层。
在这个问题中,我们将得到一个正数N,我们的任务是打印与N值对应的第N个中心十二面体数。
示例 -
INPUT : N=2 OUTPUT : 33
**解释 -** 中心十二面体数序列中的第二个数是33,它表示为中心有一个点,周围环绕着一个十二面体。
INPUT : N=4 OUTPUT : 427
**解释 -** 427是中心十二面体数序列中遵循特定模式的第四个数。
同样,我们需要在这个问题中打印中心十二面体数序列的第N个数。让我们看看中心十二面体数序列中每个数之间的数学关系。
算法
有一个数学公式可以表示序列中的每个中心十二面体数。每个数在序列中都可以表示为中心有一个点,周围环绕着连续的十二面体层的方式,类似地,每个中心十二面体数都具有如下形式。
$\mathrm{(中心十二面体)_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个中心十二面体数。long long int数据类型用于存储较大N值对应的中心十二面体数。
将方程$\mathrm{10(N − 1)^3 + 15(N − 1)^2 + 7(N − 1) + 1}$的结果存储在变量中。
返回存储在变量中的值,这将是期望的输出。
该方法的C++代码 -
示例
//C++ code to print the N-th centered dodecahedral number #include <bits/stdc++.h> using namespace std; //function to calculate the N-th centered dodecahedral number long long int CDn(int N){ //to store the value of centered dodecahedral number corresponding to N long long int num = 10*pow(N-1,3) + 15*pow(N-1,2) + 7*(N-1) + 1 ; return num; //return the N-th centered dodecahedral number } int main(){ int N; N=9; cout<<"The Nth dodecahedral number is "<<CDn(N)<<endl; //calling the function N=19; cout<<"The Nth dodecahedral number is "<<CDn(N)<<endl; return 0; }
输出
The Nth dodecahedral number is 6137 The Nth dodecahedral number is 63307
**时间复杂度 -:O(1)**,我们花费恒定时间来计算第N个中心十二面体数。
**空间复杂度 - O(1)**,该方法没有占用额外的空间。
结论
本文讨论了中心十二面体数及其图形表示形式。我们还学习了第N个中心十二面体数的一般表达式,我们在方法中使用它以恒定时间和空间解决了这个问题。
我希望阅读本文后,您关于该主题的所有疑问都已解答。