【GESP 一级】洛谷 B4410 金字塔 题解
一、题目概述本题是GESP 2025 年 9 月一级认证真题对应洛谷题号 B4410是入门阶段的经典循环累加题核心是计算平方和。题目可以简化为输入金字塔的层数n计算从1²到n²的平方和即1² 2² 3² … n²。样例 1n2 → 1²2²145样例 2n5 → 149162555。二、核心考察点这道题覆盖了 GESP 一级的多个高频考点是循环与累加的基础应用考点考察内容难度基础输入输出读取一个整数并输出结果⭐for循环结构遍历 1 到 n 的所有整数⭐⭐累加求和逻辑用变量记录平方和⭐⭐整数运算计算平方i*i与累加⭐⭐三、解题思路分析1. 核心逻辑拆解题目要求计算的是平方和1² 2² … n²解题步骤如下初始化总和变量sum 0用for循环从1遍历到n每次循环计算当前数字的平方i*i并累加到sum中循环结束后输出sum。2. 数学公式优化进阶平方和有通用公式这个公式可以直接一步算出结果无需循环效率更高。样例 1n2 →2×3×5/6 30/6 5✔️样例 2n5 →5×6×11/6 330/6 55✔️四、完整解题流程方法 1循环累加新手推荐逻辑直观读取层数n初始化sum 0for (int i 1; i n; i)每次sum i*i输出sum。方法 2公式直接计算进阶写法读取层数n用公式计算sum n * (n 1) * (2 * n 1) / 6输出sum。五、易错点提醒考试避坑循环起点错误循环必须从1开始不能从0开始否则会多计算0²0虽然结果不变但逻辑不严谨。累加变量初始化错误sum必须初始化为0否则会包含随机值导致结果错误。公式计算的整数溢出题目中n≤5050×51×101257550在int范围内最大约 2e9不会溢出如果n更大需要用long long类型存储。边界值测试n1结果为1n50结果为50×51×101/6 42925。六、完整 C 代码写法 1循环累加版新手友好#include iostream using namespace std; int main() { int n; cin n; int sum 0; for (int i 1; i n; i) { sum i * i; // 累加当前层数的平方 } cout sum endl; return 0; }写法 2公式计算版高效简洁#include iostream using namespace std; int main() { int n; cin n; // 平方和公式n(n1)(2n1)/6 int sum n * (n 1) * (2 * n 1) / 6; cout sum endl; return 0; }七、扩展练习举一反三学会这道题的核心逻辑后可以试试以下扩展练习巩固循环累加与数列求和能力练习 1立方和计算题目变形输入n计算1³ 2³ … n³的和。提示循环累加i*i*i或使用公式(n(n1)/2)²。练习 2奇数平方和题目变形输入n计算前n个奇数的平方和如 n31²3²5²。提示循环变量i从 1 开始每次加 2累加i*i。练习 3金字塔倒序求和题目变形输入n计算n² (n-1)² … 1²的和和原题结果相同。提示循环从n遍历到1逻辑和原题一致。练习 4双重循环打印金字塔题目变形输入n打印一个数字金字塔如 n31 2 2 3 3 3提示外层循环控制行数内层循环控制空格和数字输出。练习 5金字塔砖块统计扩展题目变形金字塔每层的石块数是连续奇数1, 3, 5, …输入n求总石块数。提示前n个奇数的和是n²也可以循环累加2*i-1。八、总结这道题的核心是循环累加与平方和计算是 GESP 一级中非常典型的数列求和基础题。通过这道题你不仅掌握了循环累加的基本用法还了解了平方和的数学公式这种 “循环实现” 和 “公式优化” 的对比思维对后续学习算法非常有帮助。