B3735 题解

· · 题解

思路分析

分解问题

简单的一个找规律的题目。

我们可以将整个圣诞树的连边分为两类:从上往下连接和最后一排横向连接的绳子。

其中从上往下连接的定义时:1,2,\cdots,n-1 层的每个星星都向下一层最近的两个星星连的绳子。

接下来我们可以对其分别计数,最后两部分求和即可。

从上往下连接

声明:在这部分中,我们定义第 i\,(1\le i\le n-1) 层的绳子数为第 i 层连接第 i+1 层的绳子数量。

运用大眼观察法,可以发现第 i 层的绳子数为 2\times i,所以可以得出这部分的每层的绳子数构成一个等差数列,为 2,4,6,\cdots,2\times(n-1)。 根据等差数列求和公式,上数列的所有数之和即为 \dfrac{[\,2+2\times(n-1)\,]\times(n-1)}{2}=n\times(n+1)

最后一排横向连接

很容易发现,这一部分的绳子数即为 n-1

合并问题

将两部分的值相加,得 n\times(n-1)+(n-1)=(n-1)\times(n+1)。这就是最终的答案了。由于 n\le10^3,所以 (n-1)\times(n+1)\le999999,无需开 long long

代码演示

#include <iostream>

int main() {
    int n; std::cin >> n;
    std::cout << (n + 1) * (n - 1); // 根据公式直接计算
    return 0;
}