#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
long long sum = 0;
for (int i = 1; i <= n; i++) {
sum = sum + i * i + i * i * i;
}
printf("%lld", sum);
return 0;
}
这段代码的功能是:从用户输入一个整数 n,然后计算从 i=1 到 n 的每个 i 的平方与立方之和,即 sum = Σ(i² + i³),最后输出结果。
- 代码中使用了 long long 类型来存储 sum,这是正确的,因为当 n 较大时,平方和与立方和可能会超出 int 的范围。
- 循环从 1 到 n,每次累加 i² + i³,但注意 i² 和 i³ 本身是 int 类型,在累加前会隐式转换为 long long,所以不会溢出。
- 提示1:检查题目要求是否真的是计算 i² + i³ 的和,还是需要分别计算平方和与立方和再相加?如果题目要求的是“所有数的平方和加上所有数的立方和”,那么当前代码是正确的;但如果要求的是“每个数的平方与立方分别求和后再相加”,则当前代码也是正确的,因为加法满足交换律。但请确认题目是否要求分别输出平方和与立方和。
- 提示2:如果 n 很大(比如超过 1000000),循环计算 i² 和 i³ 可能会较慢,但作为基础练习,当前实现是可行的。如果题目有性能要求,可以考虑使用数学公式直接计算平方和与立方和。