题解:洛谷 AT_abc425_a Sigma Cubes
【题目来源】
洛谷:AT_abc425_a [ABC425A] Sigma Cubes - 洛谷
【题目描述】
给定一个正整数 \(N\)。
对于 \(i=1,2,\ldots,N\),计算 \((-1)^i \times i^3\),并求这 \(N\) 个值的和。
即,求 \(\displaystyle \sum_{i=1}^N (-1)^i \times i^3\) 的值。
【输入】
输入包含一行,格式如下:
\(N\)
【输出】
输出 \(\displaystyle \sum_{i=1}^N (-1)^i \times i^3\) 的值。
【输入样例】
3
【输出样例】
-20
【核心思想】
-
问题分析:给定正整数 \(N\),需要计算 \(\sum_{i=1}^{N} (-1)^i \times i^3\) 的值。这是一个直接模拟/公式计算问题,关键在于正确处理交替符号 \((-1)^i\) 并逐项累加立方值。
-
算法选择:
- 直接循环累加:遍历 \(i\) 从 \(1\) 到 \(N\),计算 \((-1)^i \times i^3\) 并累加
-
关键步骤:
- 读取输入:读入正整数 \(N\)
- 循环求和(\(i\) 从 \(1\) 到 \(N\)):
- 符号项:\((-1)^i\),\(i\) 为奇数时为 \(-1\),\(i\) 为偶数时为 \(+1\)
- 累加:\(ans \mathrel{+}= (-1)^i \times i^3\)
- 输出 \(ans\)
-
时间/空间复杂度:
- 时间复杂度:\(O(N)\),循环 \(N\) 次
- 空间复杂度:\(O(1)\),仅需常数个变量
-
直接模拟的核心思想:
- 逐项计算:按照数学定义直接翻译为代码,每项独立计算后累加
- 符号控制:利用
pow(-1, i)或i % 2 == 0 ? 1 : -1控制交替符号 - 适用于"有限项数列求和"类基础问题,当 \(N\) 较小时直接模拟最简洁
【算法标签】
入门 #模拟
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int n; // 输入的整数n,表示求和项数
int ans; // 存储最终的求和结果
int main()
{
// 输入整数n
cin >> n;
// 计算交替符号的立方和
for (int i = 1; i <= n; i++)
{
// 计算(-1)^i * i^3 并累加到结果中
ans += pow(-1, i) * i * i * i;
}
// 输出最终结果
cout << ans << endl;
return 0;
}
【运行结果】
3
-20
浙公网安备 33010602011771号