酷代码 AI
菜单
服务商

题目描述 圣诞树共有 n 层,从上向下数第 1 层有 1 个星星、第 2 层有 2 个星星、以此类推,排列成下图所示的形状。 星星和星星之间用绳子连接。第 1,2,⋯,n−1 层的每个星星都向下一层最近的两个星星连一段绳子,最后一层的相邻星星之间连一段绳子。 你能算出如果要布置一棵很大(n 层)的圣诞树,需要买多少段绳子吗? 输入格式 输入一行一个整数 n,圣诞树的层数。 输出格式 输出一行一个整数,代表圣诞树中绳子的段数。 输入输出样例 输入 #1复制 2 输出 #1复制 3 输入 #2复制 4 输出 #2复制 15 说明/提示 样例解释 样例 1 2 层的圣诞树只需 3 段绳⼦。 样例 2 参考题图。 数据规模 所有数据满足 1≤n≤10 3 。 本题原始满分为 15pts。用C++来表示

```cpp #include <iostream> using namespace std; int main() { long long n; cin >> n; // 计算绳子总数 // 1. 层间绳子: 第i层有i个星星,每个星星向下连2个绳子(除了最后一层) // 总数为 1*2 + 2*2 + ... + (n-1)*2 = 2 * (1+2+...+(n-1)) // 2. 底层绳子: 最后一层n个星星,相邻星星之间有n-1段绳子 long long layer_ropes = n * (n - 1); // 2 * (n*(n-1)/2) long long bottom_ropes = n - 1; cout << layer_ropes + bottom_ropes << endl; return 0; } ``` 代码解释: 1. 层间绳子计算: - 第1层有1个星星,向下连2段绳子(连到第2层的2个星星) - 第2层有2个星星,每个向下连2段绳子(连到第3层的对应星星) - 以此类推,第(n-1)层有(n-1)个星星,每个向下连2段绳子 - 总层间绳子数 = 2 × (1 + 2 + ... + (n-1)) = 2 × [n×(n-1)/2] = n×(n-1) 2. 底层绳子计算: - 第n层有n个星星,相邻星星之间各连1段绳子 - 底层绳子数 = n - 1 3. 总绳子数: - 总绳子数 = 层间绳子 + 底层绳子 = n×(n-1) + (n-1) = (n+1)×(n-1) = n² - 1 示例验证: - n=2时:输出 2×1 + 1 = 3 ✓ - n=4时:输出 4×3 + 3 = 15 ✓ 时间复杂度: O(1) 空间复杂度: O(1) [2025-12-16 22:19:34 | AI问答 | 486点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多