1 条题解

  • 0
    @ 2025-8-24 21:14:43

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 残阳如血
    人事已尽,天命难违

    搬运于2025-08-24 21:14:43,当前版本为作者最后更新于2023-09-27 19:57:05,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    思路分析

    分解问题

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

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

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

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

    从上往下连接

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

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

    最后一排横向连接

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

    合并问题

    将两部分的值相加,得 n×(n1)+(n1)=(n1)×(n+1)n\times(n-1)+(n-1)=(n-1)\times(n+1)。这就是最终的答案了。由于 n103n\le10^3,所以 (n1)×(n+1)999999(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;
    }
    
    • 1

    信息

    ID
    8338
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者