Algorithm 如何在立方体模式中找到立方体的数量,其中立方体的中心沿手臂有4个立方体

Algorithm 如何在立方体模式中找到立方体的数量,其中立方体的中心沿手臂有4个立方体,algorithm,Algorithm,从早上开始,我就一直在与下面的黑客问题作斗争,不知道出了什么问题。 你能指出代码中的错误吗 在立方体模式中,最下层和最上层包含1个立方体。下一个内部层包含5个立方体,每个立方体的中心有一个立方体,沿臂的中心有4个立方体。以类似的方式,内部级别包含13个立方体,以此类推。连续层中的立方体数量首先增加到((n+1)/2)级,然后开始减少,方式相同,即形状对称 对于给定的整数N(奇数),找到立方体。 假设N=7,那么立方体层的顺序如下:1,5,13,25,13,5,1。对于N=7,答案是1+5+13

从早上开始,我就一直在与下面的黑客问题作斗争,不知道出了什么问题。 你能指出代码中的错误吗

在立方体模式中,最下层和最上层包含1个立方体。下一个内部层包含5个立方体,每个立方体的中心有一个立方体,沿臂的中心有4个立方体。以类似的方式,内部级别包含13个立方体,以此类推。连续层中的立方体数量首先增加到((n+1)/2)级,然后开始减少,方式相同,即形状对称

对于给定的整数N(奇数),找到立方体。

假设N=7,那么立方体层的顺序如下:1,5,13,25,13,5,1。对于N=7,答案是1+5+13+5+1=63

我编写的以下代码似乎并不适用于所有测试用例,显然比预期的要花更多的时间

    static ulong FindCubes(long N)
    {
       if (N == 1)
            return 1;
        if (N == 2)
            return 5;

        ulong factor = 4, sum = 1, lastNum =1;

        for (int i = 1; i < (N / 2 + 1); i++)
        {                
            lastNum += factor;
            sum += lastNum;                
            factor += 4;
        }
        return sum * 2 - lastNum; ;
    }
静态ulong FindCube(长N)
{
如果(N==1)
返回1;
如果(N==2)
返回5;
ulong系数=4,总和=1,最后数=1;
对于(int i=1;i<(N/2+1);i++)
{                
lastNum+=系数;
sum+=lastNum;
因子+=4;
}
返回和*2—lastNum;
}

有一些方法可以做到这一点,事实上,正如评论中提到的,最有效的方法(在我看来)是执行一个
算术级数
,并为序列中的每个数字找到一个公式-根据它是:

n^2+(n-1)^2

但不要就此止步!现在,您可以使用相同的方法找到系列中的常规元素:

和n^2+(n-1)^2,n=1到k

这是根据

1/3*(k+2*k^3)

现在您可以编写一个简单的python代码:

n=7
#计算要求和的层数
层=(n-1)/2
#使用新公式对层求和
层之和=1/3*(层+2*层**3)
#添加中间项(对于N=7,则为25)
中间层索引=层+1
#使用算术级数中的公式
中间项目=中间指数**2+(中间指数-1)**2
#打印结果
打印(整数(图层总数*2+中间项目))
导致:

63


尝试使用
算术级数
推导数学公式,这样你就不必从1迭代到N,也不必作弊并查阅在线整数序列百科全书。算术级数为:2*N*(N+1)+1;我仍然需要循环N/2+1次,对吗,然后求和?我知道有更好的办法,但我现在还不清楚。