中心十五边形数

data structurec++server side programmingprogramming

问题包括针对任何输入数字 N 打印第 N 个中心十五边形数。

中心十五边形数是一种可以以图形形式表示的数字,该图形的中心有一个点,周围是十五边形(即 15 边形)的连续层。这里,十五边形的连续层表示围绕中心点的第一层将是 15 边形,下一层将是 30 边形,然后是 45 边形,依此类推。

我们可以通过下图了解中心十五边形的概念。

第一个中心十五边形数字用中心的一个点表示。因此,第一个数字将是 1。

下一个中心十五边形数可以表示为中心的一个点,后面是一层十五边形(15 边形)。因此,第二个中心十五边形数将是 15+1=16。

第三个中心十五边形数是 46,因为它以图形的形式表示,中心有一个点,周围是连续的十五边形层。十五边形的连续层表明第一层将是 15 边形,第二层将是 30 边形。

我们可以按照相同的模式计算连续的中心十五边形数。按照图中的规律计算出来的前几个中心十五边形数是1、16、46、91、151、226、316、421、541……

我们将得到任意正整数N,我们需要打印出与之对应的第N个中心十五边形数。

示例

输入:N=5
输出:151

解释 − 第5个中心十五边形数是151,表示为中心的一个点,周围是四层连续的十五边形,总和为1+15+30+45+60=151。

输入:N=9
输出:541

解释 - 第 9 个中心十五边形数是 541。

让我们看看算法来找出第 N 个中心十五边形数。

算法

我们需要观察中心十五边形数序列中遵循的模式。当以图形形式表示时,每个第 N 个中心十五边形数都被 (N-1) 个连续的十五边形层包围。十五边形的连续层数顺序为 15、30、45、60、75…..

第一个中心十五边形数被 0 层十五边形包围,因为它只是用中心的一个点表示。所以我们可以说第 N 个中心十五边形数是十五边形的 (N-1) 个连续层数之和 + 1。

由于十五边形连续层的顺序形成一个 A.P.,其第一项为 a=15,公差为 d=15。因此,第 N 个中心十五边形数可以计算为 −

$$\mathrm{(centered \: pentadecagonal)_N=sum \: of \: (N − 1)successive \: levels \: of \: pentadecagon + 1}$$

$$\mathrm{sum \: of \: N \: ters \: of \: AP =\frac{N}{2}(2*a+(N − 1)d)}$$

其中,a= AP 的第一项

$$\mathrm{d= common \: difference \: of \: AP}$$

使用计算第 N 个中心十五边形数的公式,

$$\mathrm{(centered \: pentadecagonal)_N=\frac{(N − 1)}{2}(2*15+(N − 2)*15)+1}$$

$$\mathrm{=\frac{15*(N − 1)}{2}(2+N − 2)+1}$$

$$\mathrm{=\frac{15*N*(N − 1)}{2}+1}$$

这是使用简单数学得出的任何第 N 个中心十五边形数的公式。我们将在解决问题的方法中使用这个公式。

方法

在 C++ 中应用公式计算第 N 个中心十五边形数的步骤 -

  • 我们将创建一个函数来计算第 N 个中心十五边形数。

  • 初始化一个名为 ans 的变量,将其作为 long long int 来存储 N 值较大的第 N 个中心十五边形数。

  • 在算法中使用派生公式来计算数字。

  • 打印计算出的数字,这将是我们所需的输出。

该方法的 C++ 代码 -

示例

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

//函数用于给出第 N 个中心十五边形数
long long int Nth_number(int N){
    long long int ans= (15 * N * (N-1))/2 + 1; //存储第 N 个数
    
    return ans; //返回第 N 个数
}
int main(){
    int N;
    N=12;
    cout<<"第 N 个中心十五边形数为 "<<Nth_number(N)<<endl; //调用函数
    N=19;
    cout<<"第 N 个中心十五边形数为 "<<Nth_number(N)<<endl;
}

输出

第 N 个中心十五边形数为 991
第 N 个中心十五边形数为 2566

时间复杂度O(1) ,计算第 N 个数需要花费恒定的时间。

空间复杂度O(1) ,我们没有使用任何额外的空间。

结论

本文讨论了中心十五边形数背后的概念。我们利用中心十五边形数序列中的模式,找到了计算任意正数 N 的第 N 个中心十五边形数的公式。我们想出了一种使用导出公式在 C++ 中打印第 N 个中心十五边形数的有效方法。

希望您阅读本文后,与该主题相关的概念已经清晰。


相关文章